JavaDOM:获取所有父列表

JavaDOM:获取所有父列表,java,xml,dom,Java,Xml,Dom,我需要列出至少包含一个子元素的所有元素。例如,在下面的XML中,H、I、T每个字段至少有一个子字段。我需要列出H,I,T,仅忽略其他家长,如G_GT,Rec等 H 1. 我 08 T 1. T 2. 代码的输出应为H,I,T。 我正在使用DOM解析器开发Java。有人能建议如何在Java中使用DOM来实现这一点吗?我不能将函数用作getElementByTagName等,因为我可以获得具有不同父名称和子名称的XML。因此,我必须避免任何硬编码的孩子或父母的名字 问候,, Phil要查找没有子

我需要列出至少包含一个子元素的所有元素。例如,在下面的XML中,H、I、T每个字段至少有一个子字段。我需要列出H,I,T,仅忽略其他家长,如G_GT,Rec等


H
1.
我
08
T
1.
T
2.
代码的输出应为H,I,T。 我正在使用DOM解析器开发Java。有人能建议如何在Java中使用DOM来实现这一点吗?我不能将函数用作getElementByTagName等,因为我可以获得具有不同父名称和子名称的XML。因此,我必须避免任何硬编码的孩子或父母的名字

问候,,
Phil

要查找没有子元素节点的元素节点的父元素节点,可以从以下代码段开始

NodeList elements = document.getElementsByTagName("*");
Set<String> nodesNames = new LinkedHashSet<>();
for (int i = 0; i < elements.getLength(); i++) {
      Node node = elements.item(i);
      NodeList nodeList = node.getChildNodes();
      for (int j = 0; j < nodeList.getLength(); j++) {
            Node currentNode = nodeList.item(j);
            if (currentNode.getNodeType() == Node.ELEMENT_NODE) {
                 nodesNames.add(node.getParentNode().getNodeName());
                 break;
            }
      }
}
System.out.println("nodesNames = " + nodesNames);

xml底部缺少?您的规则似乎错误或不完整。当您的情况为
时,至少有一个孩子
。为什么不
?G\u GT没有字段。它只包含有更多字段的T。我需要T,但不需要G\GTT有字段Key&F3没有任何子项,因此我需要它们的父项是T。因为G\GT没有任何无子项字段,即包含值如2的字段,我不需要G\GT。您是否检查了我的答案?对你有用吗?如果没有,问题是什么?
[H, I, T]