TextNode的NodeName在JAVA xml解析中没有正确显示



我正在使用org.w3c在JavaBean中解析XML文档。dom api。

如果节点是ElementNode,则方法Node . getnodename()返回节点的标记名。

但是如果我在具有文本内容的子节点上使用它,它不会返回标记名。但是它返回nodeType,如#TextNode或#CDATA。但我还想获得ChildNode的TagName。我试过了

node.getNodeName();
node.getNodeValue();
node.getTextContent();

以上三个方法都不返回具有Textcontent的子节点的标记名。正确的方法是什么?

如果节点类型返回为CDATA或TextNode,那么您正在查看的节点文本数据—它不是包含文本数据的元素。因此,节点没有标签名称——它不是一个标签。您应该询问它的父节点(其中作为一个元素)并查找其名称。

如果这没有帮助,请发布一些示例代码(理想情况下是一个简短但完整的控制台应用程序,我们可以复制,粘贴,编译和运行),您正在运行的XML,预期输出和实际输出

再次检查xml文档和代码。你实际上看到的是Text Node或CDATA-section,而不是Element

你可以通过

来检查
if (childnode.getType != Node.ELEMENT_NODE) {
  System.out.println("Ooops, navigation error, need to turn around");
}

或者暂时添加一些调试代码

System.out.println(childnode.getClass().getName());
System.out.println(childnode.getParentNode().getNodeName());

最新更新