TextNode的NodeName在JAVA xml解析中无法正确显示
问题描述:
我正在使用org.w3c.dom api解析JavaBean中的XML文档。TextNode的NodeName在JAVA xml解析中无法正确显示
如果节点是ElementNode,那么方法node.getNodeName()将返回节点的标记名。
但是,如果我在有文本内容的childnode上使用它,它不会返回标记名。但它返回节点类型,如#TextNode或#CDATA。但我也想获得ChildNode的TagName。 我已经试过的上述三种方法返回其具有的TextContent子节点的标记名
node.getNodeName();
node.getNodeValue();
node.getTextContent();
无。 什么是正确的方法?
答
如果节点类型是回来为CDATA或TextNode,然后你看节点为文本数据 - 它不包含文本数据元素。因此,节点有没有标签名称 - 它不是标签。你应该问它的父节点(其中将是一个元素)并找到它的名称。
如果没有帮助,请张贴一些示例代码(理想的是短,但完整控制台应用程序,我们可以复制,粘贴,编译和运行),你和运行它的XML,预期产出和实际产出。
答
仔细检查xml文档和您的代码。您实际上正在查看文本节点或CDATA部分但不在元素。
您可以通过检查该做
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());