我收到以下錯誤而遍歷DOM在PHP
Fatal error: Call to undefined method DOMText::getAttribute()
我在做什麼的,我遍歷DOM節點一個接一個。但在某些情況下,我沒有得到適當的DOM節點,從中我可以得到特定的屬性。當我獲取DOMText節點時, - > nodeType == 3總是(不是DOM節點, - > nodeType == 1),因此我無法獲取返回的DOM節點的任何屬性。
我獲取在PHP
$node = $node->nextSibling;
,並在某些情況下,我還需要獲取前面的節點,以及這樣
$node = $node->previousSibling;
現在,我的問題是使用下面的語法接下來DOM節點,我如何獲得適當的DOM節點?
我曾嘗試以下功能
function GetNode($oNode)
{
while($oNode->nodeType != 1)
$oNode = $oNode->previousSibling;
return $oNode;
}
與檢查條件(其中我已經使用該節點),如
while($node && !empty($node) && $node->nodeType == 1 && !preg_match("/^Abc/",$node->getAttribute('class')))
{
//further code
$node = $node->nextSibling;
$node = GetNode($node);
}
但是現在,它會在無限循環,因爲它的返回總是節點類型出現問題== 1並且不終止循環。
您的'GetNode'不會更改'$ oNode'的值,這就是它永遠循環的原因。 – DCoder
請發佈您正在解析的xml/html文件的示例。在我看來,有些節點同時包含子元素節點和文本節點 –
@DCoder,我已經更新了代碼。這是印刷錯誤,但在實際代碼:) – NullPointer