繁体   English   中英

什么会导致DOMNode :: nodeValue为空?

[英]What would cause DOMNode::nodeValue to be empty?

我目前正在尝试使用DOMDocument解析文档,我遇到了一些严重的问题。 我创建了一个在php 5.2.9上运行良好的脚本,使用DOMNode :: nodeValue删除内容。 相同的脚本无法获得php 5.3.3上的任何内容 - 即使它正确导航到适当的节点以提取内容。

基本上,使用的代码如下所示:

$dom = new DOMDocument();
$dom->loadHTML($data);
$dom->preserveWhiteSpace = false; 
$xpath = new DOMXpath($dom);
$nodelist = $xpath->query($query);
$value = $nodelist->item(0)->nodeValue;

我已经检查过以确保item(0)实际上是一个节点 - 它就在那里,甚至是正确的类型,但是nodeValue是空的。

该脚本适用于某些文档但不适用于其他文档(在5.3.3上) - 在5.2.9上它适用于所有文档,返回正确的nodeValue。

我似乎错过了一些基本的和/或一个bug(虽然如果bug是php或libxml我不知道)。 基本上,通过确保使用loadHTML加载的数据是UTF-8编码来解决该问题。 请注意,这不是整个文档需要UTF-8编码 - 这里的问题是元素中有一个字符不是UTF-8。 然后在文档处理中抛弃了其他所有内容。

让我感到惊讶的是,这基本上意味着所有文档内容都被抛弃了 - 但结构已经正常运行。 没有错误或任何暗示内容被视为无效的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM