2017-05-07 16 views
0

我知道如何解析了每個字段的一個例如一個XML文件名稱,ID,Age通過使用DOM解析器獲取子元素並將其放入Nodelist中。如何處理XML文件,重複字段的Java

但是我不知道如何從反覆領域的一個XML文件解析和存儲數據。例如,每個設施都有多個項目,並且每個鏈接有一個以上的「鏈接」,例如西雅圖在此XML文件中與Fargo有鏈接,距離爲1426.

我將如何處理項目和鏈接的解析?我不能簡單地匹配子字符串項目,因爲我有多個項目。我不知道是否適合使用一個NodeList,所以我不確定要使用哪種數據結構。

我在GOOGLE上搜索Java的XML解析,我仍然感到困惑,我不知道用什麼樣的數據結構來存儲所有這些信息。

<Facility> 
    <Name>Seattle, WA</Name> 
    <ProcessingRate>8</ProcessingRate> 
    <ProcessingCost>300</ProcessingCost> 
    <Link> 
     <Name>Fargo, ND</Name> 
     <Distance>1426</Distance> 
    </Link> 
    <Link> 
     <Name>San Francisco, CA</Name> 
     <Distance>808</Distance> 
    </Link> 
    <Item> 
     <Id>ABC123</Id> 
     <Quantity>45</Quantity> 
    </Item> 
    <Item> 
     <Id>JBL3100</Id> 
     <Quantity>52</Quantity> 
    </Item> 
    <Item> 
     <Id>PL132-C</Id> 
     <Quantity>54</Quantity> 
    </Item> 
    <Item> 
     <Id>PU238</Id> 
     <Quantity>60</Quantity> 
    </Item> 
</Facility> 

<Facility> 
+0

[轉換XML文件轉換成XML對象有一個列表](HTTP可能重複:// stackoverflow.com/questions/13987708/convert-xml-file-into-an-xml-object-having-a-list) – tima

回答

0

你可以這樣寫這個XML文件的一類對象:

class Facility { 
    String Name; 
    String ProcessingRate; 
    String ProcessingCost; 
    List<ChildObject> links; 
    List<ChildObject> items; 
} 

class ChildObject { 
    String name; 
    String value; 
    String type; 
} 
+0

我怎麼解析它?在我給例子的例子中,我會使用類似這樣的方式進行解析:名稱的數組列表,然後是getElementByTagName(「ID」),getElementByTagName(「Age」)等等。 –

+0

你可以自己做。只需讀取xml並將值放入此對象中的等效字段即可。有關讀取xml的詳細信息,請參閱[本文](https://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/)。然後只需映射到上面的對象類 –