gpt4 book ai didi

java - 解析 XML 文本列表

转载 作者:行者123 更新时间:2023-12-02 08:35:02 25 4
gpt4 key购买 nike

我正在尝试解析 XML 文件。我能够解析普通文本节点,但如何解析文本列表?我得到了文本列表的第一个 child ,遗憾的是这就是全部。如果我尝试这样做

 elem.nextSibling();

它总是为空,这是不可能的,我知道还剩下两个值。

有人可以给我举个例子吗?

谢谢!

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>

最佳答案

我假设您正在使用 DOM 解析器。

<textlist>的第一个 child 节点不是第一个<text>节点,而是包含 <textlist> 末尾之间的空格和回车符的原始文本和 <text> 的开头。以下代码片段的输出(使用 org.w3c.dom.* 和 javax.xml.parsers.*)

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>有五个 child :两个 <text>元素以及它们之前、之间和之后的三个原始文本片段。

>>> #text
>>> text
>>>>>>>> Lore1
>>> #text
>>> text
>>>>>>>> Lore2
>>> #text

以这种方式解析 XML 时,很容易忽视 DOM 树的结构可能很复杂。您很快就会在错误的生成中迭代 NodeList,然后在您期望的兄弟节点中得到 null。这就是人们想出各种 xml 到 java 的东西的原因之一,从自制的 XMLHelper 类到 XPath 表达式,再到 Digester 到 JAXB,因此只有在绝对必要时才需要深入到 DOM 级别。

关于java - 解析 XML 文本列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2110349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com