gpt4 book ai didi

java - getElementsByTagName 向下搜索所有级别的 XML 节点

转载 作者:行者123 更新时间:2023-11-29 05:34:42 25 4
gpt4 key购买 nike

我有这个 XML 文件:

<root>
<node1>
<name>A</name>
<node2>
<name>B</name>
<node3>
<name>C</name>
<number>001</number>
</node3>
</node2>
</node1>
</root>

我正在解析文件,以获取每个节点的名称,以及相应的编号(如果存在)。

我使用:

String number = eElement.getElementsByTagName("number").item(0).getTextContent();

这应该给我这样的东西:

Name | Number
A |
B |
C | 001

但是我得到:

Name | Number
A | 001
B | 001
C | 001

所以,我认为 getElementsByTagName("Number") 正在寻找一个节点的所有子节点中的数字节点。我不想要那个。有人知道解决方法吗?

我想过用XPath代替上面的方法,但我真的很想知道是否有现成的方法。谢谢

最佳答案

您可以使用 JDK/JRE 中的 javax.xml.xpath API 来更好地控制通过 getElementsByTagName 返回的 XML。

import java.io.File;
import javax.xml.parsers.*;
import javax.xml.xpath.*;
import org.w3c.dom.*;

public class Demo {

public static void main(String[] args) throws Exception {
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document document = docBuilder.parse(new File("filename.xml"));

XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
Element element = (Element) xpath.evaluate("//node3/name", document, XPathConstants.NODE);
}

}

关于java - getElementsByTagName 向下搜索所有级别的 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19932570/

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