解析XML Textlist

时间:2010-01-21 15:24:29

标签: java xml parsing

我正在尝试解析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>

1 个答案:

答案 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级别。