PHP で DOM をトラバースしているときに、次のエラーが発生します。
致命的なエラー: 未定義のメソッド DOMText::getAttribute() の呼び出し
私がやっていることは、DOM ノードを 1 つずつトラバースしていることです。しかし、特定の属性を取得できるような適切な DOM ノードを取得できない場合があります。DOMText ノードを取得しているため、常に ->nodeType==3 (DOM ノードではなく、->nodeType == 1) であるため、返された DOM ノードの属性を取得できません。
PHPで以下の構文を使用して次のDOMノードを取得しています
$node = $node->nextSibling;
場合によっては、このように以前のノードも取得する必要があります
$node = $node->previousSibling;
さて、私の質問は、適切な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);
}
しかし、常にnodeType == 1を返し、ループを終了しないため、無限ループに陥るという問題が発生します。