データを他の形式で保存するために、PHP DOM拡張機能を使用してXMLを解析しています。当然のことながら、要素を解析するときに、ある名前のすべての子要素を取得する必要があることがよくあります。メソッドがありますが、DOMElement::getElementsByTagName($name)
直接の子だけでなく、その名前を持つすべての子孫を返します。プロパティもありますDOMNode::$childNodes
が、(1)要素リストではなくノードリストが含まれており、リスト項目を要素に変換できたとしても(2)それらすべての名前を確認する必要があります。特定の名前の子のみを取得するためのエレガントなソリューションは本当にありませんか、それともドキュメントに何かが欠けていますか?
いくつかの例:
<?php
DOMDocument();
$document->loadXML(<<<EndOfXML
<a>
<b>1</b>
<b>2</b>
<c>
<b>3</b>
<b>4</b>
</c>
</a>
EndOfXML
);
$bs = $document
->getElementsByTagName('a')
->item(0)
->getElementsByTagName('b');
foreach($bs as $b){
echo $b->nodeValue . "\n";
}
// Returns:
// 1
// 2
// 3
// 4
// I'd like to obtain only:
// 1
// 2
?>