2011-04-07 55 views
0

我正在使用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(); 

无。 什么是正确的方法?

回答

1

如果节点类型是回来为CDATA或TextNode,然后你看节点为文本数据 - 它不包含文本数据元素。因此,节点没有标签名称 - 它不是标签。你应该问它的父节点(其中是一个元素)并找到它的名称。

如果没有帮助,请张贴一些示例代码(理想的是短,但完整控制台应用程序,我们可以复制,粘贴,编译和运行),你和运行它的XML,预期产出和实际产出。

0

仔细检查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());