这与 PHP Dom Document 有关。
我有如下示例文件
<?xml version="1.0" encoding="UTF-8"?>
<document>
<items>
<item class="pen">
<no>1</no>
<name>A</name>
<price>10</price>
</item>
<item class="book">
<no>2</no>
<name>B</name>
<price>20</price>
</item>
<item class="pen">
<no>2</no>
<name>C</name>
<price>30</price>
</item>
</items>
</document>
PHP 代码
$nodeCount = $oElement;
$limitCount = 1;
$nodeCount = $nodeCount->nextSibling;
while($nodeCount && !empty($nodeCount) && $nodeCount->nodeType == 1 && !preg_match("/pen/",$this->GetNodeClass($nodeCount)))
{
$limitCount++;
$nodeCount = $nodeCount->nextSibling;
}
在这里,GetNodeClass()
检查一个属性class
,这是发生错误的罪魁祸首
function GetNodeClass($oElement)
{
//Error comes from below line when try to execute getAttribute() method on TextNode
$class = $oElement->getAttribute('class');
return $class;
}
当我遍历这些元素时,有时我会收到如下错误
致命错误:调用未定义的方法 DOMText::getAttribute()
然后我尝试使用以下条件解决它以防止该错误。
$node->nodeType == 1
在某些情况下,它可以正常工作,但在某些情况下,它总是显示错误,如解释的那样。我知道它的出现是因为white space
节点之间的一些。但是在读取 XML 文件时还有其他方法可以忽略那些空白吗?因为我已经写了这么多代码,所以如果有一些精确的解决方案。
我使用 DomDocument 对象来完成这一切。
任何帮助将不胜感激。