2015-08-24 44 views
0

我需要知道的最好的解決辦法是閱讀以下XML代碼並將結果爲對象的內容:將xml代碼解碼爲Java對象的最佳方式是什麼?

   <accountInformation> 
      <customField> 
       <key>businessregno</key> 
       <value>12345</value> 
      </customField> 
      <customField> 
       <key>emailaddress</key> 
       <value>[email protected]</value> 
      </customField> 
      <customField> 
       <key>idnumber</key> 
       <value>8601095195084</value> 
      </customField> 
      <customField> 
       <key>initial</key> 
       <value>J</value> 
      </customField> 
      <customField> 
       <key>lastname</key> 
       <value>Boshoff</value> 
      </customField> 
      <customField> 
       <key>licensetype</key> 
       <value>07</value> 
      </customField> 
      <customField> 
       <key>licensetypedescription</key> 
       <value>Normal</value> 
      </customField> 
      <customField> 
       <key>loaduserid</key> 
       <value>12345</value> 
      </customField> 
      <customField> 
       <key>passportno</key> 
       <value>1234512345</value> 
      </customField> 
      <customField> 
       <key>title</key> 
       <value>Mr</value> 
      </customField> 
      <customField> 
       <key>validationrefno</key> 
       <value>0</value> 
      </customField> 
      <customField> 
       <key>accountnumber</key> 
       <value>608806709</value> 
      </customField> 
      <customField> 
       <key>balance</key> 
       <value>500</value> 
      </customField> 
      <customField> 
       <key>contactno</key> 
       <value>0846769478</value> 
      </customField> 
      <customField> 
       <key>landlinecontactno</key> 
       <value>0218865557</value> 
      </customField> 
      <customField> 
       <key>physicaladdress</key> 
       <value>SUITE 4,OU KOLLEGE GEBOU,STELLIES,WESTERN PROVINCE,5600,35,CHURCH STREET,</value> 
      </customField> 
      <customField> 
       <key>validity</key> 
       <value>true</value> 
      </customField> 
     </accountInformation> 

我已經嘗試了哈希映射的問題,但所有的元素都具有相同的名稱,以便我有一個問題填充到列表中。

什麼是我寫入java對象的最佳方式?

謝謝你的幫助。

+0

我會去與字符串數組的列表。 –

+0

我沒有看到所有具有相同名稱的元素..有一個密鑰標籤,因此密鑰應該是唯一的。確保它是..無論如何怎麼樣的字符串數組列表? – Stefan

+1

我會使用XStream庫。 – Viva

回答

1

我正在做類似的事情,發現w3c DOM是相當不錯的。

File xmlFile = new File(path); 

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
factory.setFeature(
     "http://apache.org/xml/features/nonvalidating/load-external-dtd", 
     false); 
DocumentBuilder builder = factory.newDocumentBuilder(); 

document = builder.parse(xmlFile); //or parse the String 

document.getDocumentElement().normalize(); 

因此,現在您將xml文件作爲Document對象。

Map<String, String> map = new HashMap<String, String>(); 
NodeList nodelist = document.getElementsByTagName("customField") 

for (int i=0; i<nodelist.getLength(); i++) { 
    Element element = (Element) nodelist.item(i); 

    String key = element.getAttributes("key"); 
    String value = element.getAttributes("value"); 

    map.put(key,value); 
} 

現在你有一個鍵/值的地圖。

0

如果您正在爲spring org.springframework.oxm.jaxb.Jaxb2Marshaller創建bean,請將屬性classesToBeBound設置爲pojo類。

+0

這是一個好主意在答案中包含一些示例代碼,以便OP可以從中學習。 – NaijaProgrammer

相關問題