解析XML文档获取节点值
问题描述:
我有如下的XML结构:解析XML文档获取节点值
String attributesXML="<entry>
<value>
<List>
<String>Rob</String>
<String>Mark</String>
<String>Peter</String>
<String>John</String>
</List>
</value>
</entry>"
我想获取值罗布,马克,彼得,约翰。我可以从入口节点(下面的代码)开始获取节点。问题是我不知道什么是入口节点下的子节点名称。从入口节点开始,我需要继续钻取直到找到值。我写了一个方法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());
}
}
}
}
请花更多的精力来格式化您的代码。这一切都在这个地方,使它很难阅读。在发布之前,请务必仔细阅读预览,并询问是否您希望看到的帖子*是否尝试找到需要回答的问题。 –
@Jon,我会格式化它。谢谢... –