[英]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个解决方案。 首先是:使用字段emplid
和name
创建类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.