java - xml 中的子节点名称

标签 java xml

我正在尝试编写一段可以解析任何 xml 并打印其内容的代码。我正在使用 DOM 解析器。我能够获取 xml 根标签的名称,但无法获取直接子标签的名称。如果使用“getElementsByTagName”方法已知节点名称,则可以轻松完成此操作。有没有办法摆脱这个困境?

我的代码是这样的:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
doc.getDocumentElement().normalize();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
doc.getDocumentElement().getNodeName() // this gets me the name of the root node.

现在如何获取直接子节点的名称,以便我可以使用 getElementsByTagName("x") 遍历 xml。

提前致谢。

最佳答案

getChildNodes() 返回元素的所有子元素。该列表将包含更多元素,因此您必须检查每个子节点是否是一个元素:

NodeList nodes = doc.getDocumentElement().getChildNodes();
for (int i = 0; i < nodes.getLength(); i++) {
  Node node = nodes.get(i);
  if (node instanceof Element) {
    Element childElement = (Element) node;
    System.out.println("tag name: " + childElement.getTagName());
  }
}

关于java - xml 中的子节点名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6595512/

相关文章:

c# - XML 无法获取子节点的值 : c#

java - Android Maps Utility 额外功能(集群)

Java让图像在屏幕外重新出现

java - youtube apis v3 返回播放列表

java - 使用 ANT 构建时出现 "Build Failed: failed to create task or type classpath"

xml - 为什么 XSD 说我的元素不完整?

c# - 手动创建类以映射到 XML 请求响应

php - 使用 Symfony2 将 xml 反序列化为对象

java - loadComponentFromURL 摔倒身亡,如何进行心肺复苏?

java - Xerces-for-Android 使用 Jar 而不是源代码时出现 NoClassDefFoundError