DOMDocument getNodeValue() 返回 null(包含输出转义字符串)
Posted
技术标签:
【中文标题】DOMDocument getNodeValue() 返回 null(包含输出转义字符串)【英文标题】:DOMDocument getNodeValue() returns null (contains an output escaped string) 【发布时间】:2012-09-06 23:10:03 【问题描述】:我正在处理一个 DomDocument,它基本上是 SOAP Web 服务的 XML 结果。 给你一个想法,这就是它的样子
...<ParentNode><ChildNode><output><escaped<string</ChildNode></ParentNode>...
是的,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
检查上面的代码后,您会发现即使节点为 ParentNode 和 NodeName 节点返回了正确的值,但在访问 getNodeValue() 时它返回一个空值。这里有一个字符串,我可以在控制台输出中看到它。但我不确定我在这里缺少什么技巧,输出转义是否以任何特定方式搞砸了?
谢谢, 帕里贾特
【问题讨论】:
【参考方案1】:您想要 getTextContent()
而不是 getNodeValue()
- 后者总是为元素节点返回 null。
【讨论】:
我同时使用了 rows[i].getChildNodes().rows[i].getNodeValue();它奏效了......我想知道为什么 因为<ChildNode>
元素下的子节点是文本节点,其节点值为它们包含的文本,而不是元素节点,其节点值始终为null .
Node 类型的 getTextContent() 方法未定义
@Ian Robers,当节点文本包含 、 等 html 标签时如何使用 getTextContent。【参考方案2】:
代替
rows[i].getNodeValue()
使用
rows[i].getNodeValue().getChildNodes().item(0).getNodeValue()
【讨论】:
以上是关于DOMDocument getNodeValue() 返回 null(包含输出转义字符串)的主要内容,如果未能解决你的问题,请参考以下文章
防止 DOMDocument::loadHTML() 转换实体