2012-06-27 61 views
0

可能重複:
What is the best/simplest way to read in an XML file in Java application?java類表示

我有一個這樣的XML:

<Root> 
    <Commodity> 
     <Which name="Book" /> 
     <Book name="harley" price="5" /> 
     <Book name="Marley" price="8" /> 
     <Book name="hampi" price="10" /> 
    </Commodity> 
    <Item> 
     <Commodity> 
     <Which name="fiction" /> 
     <Book name="harley" price="5" /> 
     <Book name="Marley" price="8" /> 
     <Book name="hampi" price="10" /> 
     </Commodity> 
     <Item> 
     <Commodity> 
      <Which name="thriller" /> 
      <Book name="hjhj" price="5" /> 
      <Book name="ccvcv" price="8" /> 
      <Book name="vcvnnn" price="10"/> 
     </Commodity> 
     </Item> 
    </Item> 
</Root> 

我覺得這是一個相當複雜的XML結構因爲它有一個嵌套標籤。有沒有辦法爲這個結構生成java類?

+0

一個快速的Google搜索或者一個stackoverflow搜索,可能會揭示出已經有很多答案。 –

回答

3

如果您有XSD或DTD,則可以使用JAXB輕鬆創建文檔的表示形式。

如果您沒有模式定義,我建議您寫下它。無論如何,它很快就會派上用場。只要你嘗試驗證文件或與任何人分享你的格式。

順便說一句,這不是一個複雜的XML文檔;)

+0

您可以創建沒有任何XSD或DTD的JAXB映射。 – buc

+0

@buc我可以使用註釋完成它,但問題涉及*生成類*。有沒有一種方法來做到這一點,沒有模式定義? – toniedzwiedz

+0

你是對的,我忽略了那部分。 – buc

1

雖然我完全@湯姆在模式的必要性達成一致,有時這是矯枉過正。您可以使用像XStream這樣的快速簡單的OXM框架。請參閱http://x-stream.github.io/

0

請注意,XSD(或其他模式)僅對直接子項提供約束。所以目前還不清楚你是否只有兩層嵌套的Item或無限。如果前者你將不得不手動編寫代碼 - 模式不會爲你做。

從文檔語料庫中演繹模式是一項非常艱鉅的任務。

我也會評論說,Item的嵌套使用不可能是指示Item的多個屬性的有用方法。