SimpleXMLを使用してxmlファイルを解析しています。私はそれをループしていて、各ノードで1つの特定のタグの値を取得する必要があります。これが例です
<node>
<child1></child1>
<findme></findme>
<child2></child2>
</node>
<node>
<child1>
<findme></findme>
</child1>
<child2></child2>
</node>
<node>
<child1></child1>
<child2>
<another>
<findme></findme>
</another>
</child2>
</node>
各ノードでfindme
タグを取得する必要があります。しかし、それがどのレベルになり得るかはわかりません。私が知っているのはタグ名だけです。
私が思いついた唯一の決定は、この再帰関数を使用することでした
foreach($xml as $prod){
...
$findme = getNode($prod, 'fabric');
...
}
function getNode($obj, $node) {
if($obj->getName() == $node) {
return $obj;
}
foreach ($obj->children() as $child) {
$findme = getNode($child, $node);
if($findme) return $findme;
}
}
更新しました
また、コメントで示唆されているように、次のようにDOMDocumentクラスを使用できます。
$dom = new DOMDocument();
$dom->LoadXML($xmlStr);
$nodes = $dom->getElementsByTagName('node');
foreach($nodes as $node)
{
$findme = $node->getElementsByTagName("findme")->item(0);
echo $findme->textContent."\r";
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加