我正在尝试解析XML文件。我能够解析普通文本节点但是如何解析文本列表?我得到了文本列表的第一个孩子,可悲的是所有人。如果我尝试
elem.nextSibling();
它始终为null,不能,我知道还剩下两个值。
有人能为我提供一个例子吗?
谢谢!
XML示例
<viewentry position="1" unid="7125D090682C3C3EC1257671002F66F4" noteid="962" siblings="65">
<entrydata columnnumber="0" name="Categories">
<textlist>
<text>Lore1</text>
<text>Lore2</text>
</textlist>
</entrydata>
<entrydata columnnumber="1" name="CuttedSubjects">
<text>
LoreImpsum....
</text>
</entrydata>
<entrydata columnnumber="2" name="$35">
<datetime>20091117T094224,57+01</datetime>
</entrydata>
</viewentry>
答案 0 :(得分:2)
我假设您正在使用DOM解析器。
<textlist>
节点的第一个子节点不是第一个<text>
节点,而是包含<textlist>
末尾与{的开头之间的空格和回车符的原始文本{1}}。以下代码段的输出(使用org.w3c.dom。*和javax.xml.parsers。*)
<text>
表明Node grandpa = document.getElementsByTagName("textlist").item(0);
Node daddy = grandpa.getFirstChild();
while (daddy != null) {
System.out.println(">>> " + daddy.getNodeName());
Node child = daddy.getFirstChild();
if (child != null)
System.out.println(">>>>>>>> " + child.getTextContent());
daddy = daddy.getNextSibling();
}
有五个孩子:两个<textlist>
元素以及它们之前,之间和之后的三个原始文本。
<text>
以这种方式解析XML时,很容易忽略DOM树的结构可能很复杂。您可以快速地在错误的一代中迭代NodeList,然后在您期望兄弟姐妹的地方获得空值。这是人们提出各种xml-to-java内容的原因之一,从自行开发的XMLHelper类到XPath表达式再到Digester到JAXB,所以你只需要在必要时才能进入DOM级别。