DOMDocument getNodeValue()返回null(包含输出转义字符串)

use*_*069 24 java xml dom escaping

我正在处理一个DomDocument,它基本上是SOAP Web服务的XML结果.为了给你一个想法,这就是它的样子

...<ParentNode><ChildNode>&lt;output&gt;&lt;escaped&lt;string</ChildNode></ParentNode>...
Run Code Online (Sandbox Code Playgroud)

是的,ChildNode的值是一个已经输出转义的字符串,是在此XML中打包的XML.我做通常运行的DomDocument处理如

NodeList rows = dom.getElementsByTagName(ChildNode);
for(int i=0;i<rows.length;i++)
{
  System.out.println(rows[i].getParentNode()); // returns ParentNode
  System.out.println(rows[i].getNodeName()); // returns ChildNode
  System.out.println(rows[i].getNodeValue()); // returns null
}
Run Code Online (Sandbox Code Playgroud)

在检查上面的代码之后,您意识到即使节点为ParentNode和NodeName节点返回正确的值,它也会在访问getNodeValue()时返回null值.这里有一个字符串,我可以在我的控制台输出中看到它.但我不确定我在这里缺少什么技巧,输出逃逸是否会以任何特定的方式搞乱它?

谢谢,Parijat

Ian*_*rts 53

您想要getTextContent()而不是getNodeValue()- 后者总是为元素节点返回null.

  • 因为`<ChildNode>`元素下的子节点是_text nodes_,其节点值是它们包含的文本,而不是元素节点,其节点值始终为null. (3认同)