簡體   English   中英

如何將XML轉換為List <Map>

[英]how convert XML to List<Map>

我有一個XML數據如下給出的示例..

<EMP>
   <PERSONAL_DATA>
     <EMPLID>AA0001</EMPLID>
     <NAME>Adams<NAME>
   </PERSONAL_DATA>
   <PERSONAL_DATA>
     <EMPLID>AA0002<EMPLID>
     <NAME>Paul<NAME>
    </PERSONAL_DATA>
</EMP>

我想在Map(KEY,VALUE)KEY = tagname,VALUE = value中存儲有關每個員工的信息,並希望在java中使用XPATH為所有員工創建一個LIST。 我怎樣做? 請建議謝謝

您可以使用JAXB。

我可以看到至少2個解決方案。 首先是:使用字段emplidname創建類PersonalData 使用@XmlElement注釋標記它們。 解析你的XML。 這將創建PersonalData實例的集合。 現在迭代這個集合並創建地圖,如果你真的需要它。

但您可以直接將XML映射到地圖。 看看以下博客

你可以使用正常的jaxp東西或嘗試groovy:

String xml='''<EMP>
   <PERSONAL_DATA>
     <EMPLID>AA0001</EMPLID>
     <NAME>Adams</NAME>
   </PERSONAL_DATA>
   <PERSONAL_DATA>
     <EMPLID>AA0002</EMPLID>
     <NAME>Paul</NAME>
    </PERSONAL_DATA>
</EMP>
'''
Node parsed=new XmlParser().parseText(xml)
List<Map> list=[]
parsed.each {
    Map<String,String> map=[:]
    it.children().each {
        map[it.name()]=it.value()[0]
        println "${it.name()} ${it.value()[0]}"
    }
    list.add(map)
}
println list

為什么要使用XPATH? `String expression =“// EMP / PERSONAL_DATA / *”;
XPathExpression expr = xpath.compile(expression);

     Object result = expr.evaluate(doc, XPathConstants.NODESET); 
     NodeList nodes = (NodeList) result;  

     List<Map> list = new ArrayList<Map>();

     for (int i = 0; i < nodes.getLength(); i++) {  
           Node node = nodes.item(i);
           Map<String,String> nodeMap = new HashMap<String,String>();
           if (node.getNodeName()!=null){                  
              nodeMap.put(node.getNodeName(), node.getTextContent());
              list.add(nodeMap);
           }
    }`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM