在 Java 中解析高级 XML [英] Parsing advanced XML in java
本文介绍了在 Java 中解析高级 XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想解析如下所示的非常奇怪的 xml:
Hi I want to parse pretty strange xml looking like this:
<foo>
<foo1>
<foo2></foo2>
<foo2></foo2>
<foo2></foo2>
<foo2></foo2>
<foo2></foo2>
<foo2></foo2>
<foo2></foo2>
</foo1>
</foo>
<foo>
<foo1>
<foo2></foo2>
<foo2></foo2>
<foo2></foo2>
<foo2></foo2>
<foo2></foo2>
<foo2></foo2>
<foo2></foo2>
</foo1>
</foo>
当我使用本教程时,我无法从 foo2 获取值:
I cant get values from foo2 when I used this tutorial:
http://javarevisited.blogspot.com/2011/12/parse-xml-file-in-java-example-tutorial.html
但是如果我们有像 foo2
一样的参数就不行了
But it don't work if we have same parameters like foo2
推荐答案
//规范化你的 XML 然后通过那个 XML 创建一个 Document
然后按照下面的代码
//Normalize your XML then create a Document
by that XML then follow the below code
NodeList nList = doc.getElementsByTagName("foo");
for (int temp = 0; temp < nList.getLength(); temp++) { // loop for foo
Node nodeTable = nList.item(temp);
Element xmlFoo = (Element) nodeTable;
if (nodeTable.getNodeType() == Node.ELEMENT_NODE) {
NodeList nodeListFoo1 = xmlFoo.getElementsByTagName("foo1");
for (int i = 0; i < nodeListFoo1.getLength(); i++) { // loop for foo1
Node nodefoo2 = nodeListFoo1.item(i);
Element elementfoo1 = (Element) nodefoo2;
// Collect foo2
NodeList nodeListfoo2Name = elementfoo1.getElementsByTagName("foo2");
for (int j = 0; j < nodeListfoo2Name.getLength(); j++) { //// loop for foo2
Node nodefoo2Name = nodeListfoo2Name.item(j);
Element elementfoo2Name = (Element) nodefoo2Name;
//TODO: write code here, what you want to collect from foo2
}
}
}
}
这篇关于在 Java 中解析高级 XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文