2011-03-28 111 views
0

有沒有人做過任何類型的XML配對,其名稱中有破折號的元素?我不認爲它有可能,有什麼想法?Java XML解析標準

<Person-Response> 
    <First-Name> 3119043033121014002</First-Name> 
    <Last-Name> 3119043033121014002</Last-Name> 
</Person-Response> 

回答

2

如果這是關於XML到Java的映射,然後JAXB可以處理它questin:

 
@XmlRootElement(name = "Person-Response") 
public class PersonResponse { 
    @XmlElement(name = "First-Name") 
    String firstName; 
    @XmlElement(name = "Last-Name") 
    String lastName; 
} 
+0

嗨,諾爾曼,我得到一個XML字符串,我需要把它變成你上面概述的實體。我不知道如何使用JAXB將XML字符串轉換爲沒有模式的對象。你有沒有一個例子可以做到這一點?感謝您的幫助,非常感謝! – c12 2011-03-28 11:56:26

+0

研究javax.xml.bind.JAXBContext的文檔。您可以參考一組註釋類創建一個JAXBContext,然後從該上下文創建一個Unmarshaller。 – 2011-03-28 12:07:34

2

這是合法的XML;任何兼容的解析器應該沒有問題。

+0

這是,事實上,不合法的。注意結束標籤中的尾部't',這可能是問題的根源。 – 2011-03-28 11:41:07

+0

't'是我的拼寫錯誤... – c12 2011-03-28 11:45:51

0

因爲破折號不應該有任何問題。但它是一個無效的XML按照由每諾曼

+0

你會如何解析這樣的東西到一個Java對象並獲​​取值? – c12 2011-03-28 11:45:24

3

關於破折號提到的原因,看到官方XML recommendation of the W3C:鼓勵

文檔作者使用 名這是有意義的單詞或單詞的 組合在自然語言中使用 ,並避免在名稱中使用符號或 空格字符。注意 COLON,HYPHEN-MINUS,FULL STOP (句點),LOW LINE(下劃線)和 MIDDLE DOT是明確允許的。

0

這是一個合法的XML,任何解析器都可以解析它。

關於Java,您可以通過JAXP API支持在DOM,SAX或StAX中解析此XML。