我有一个xml结构如下:
String attributesXML="<entry>
<value>
<List>
<String>Rob</String>
<String>Mark</String>
<String>Peter</String>
<String>John</String>
</List>
</value>
</entry>"
我想获取值Rob,Mark,Peter,John。我可以从入口节点(下面的代码)开始获取节点。问题是我不知道入口节点下的子节点名称是什么。从入口节点开始,我需要继续向下钻取,直到找到值。我写了一个方法getChildNodeValue()但它没有给我所需的输出。它确实打印了我需要的东西,但它也打印了一些额外的东西。我需要从这个方法getChildNodeValue()返回值作为csv。
获取条目节点:
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(attributesXML));
Document doc = db.parse(is);
NodeList nodes = doc.getElementsByTagName("entry");
for (int i = 0; i < nodes.getLength(); i++) {
if(nodes.item(i).hasChildNodes()){
getChildNodeValue(nodes.item(i));
}
}
public static void getChildNodeValue(Node node) {
System.out.println("Start Node: "+node.getNodeName());
NodeList nodeList = node.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node currentNode = nodeList.item(i);
while(currentNode.hasChildNodes()){
System.out.println("Current Node: "+currentNode.getNodeName());
nodeList = currentNode.getChildNodes();
for(int j=0;j<nodeList.getLength();j++){
currentNode = nodeList.item(j);
System.out.println("Node name: "+currentNode.getNodeName());
System.out.println("Node value: "+currentNode.getTextContent());
}
}
}
}
答案 0 :(得分:0)
你可以简单地使用XStream库进行xml解析,它会将java对象解析为xml,反之亦然。 看看下面的链接 http://x-stream.github.io/tutorial.html