0

PHPに「getAllChildrenByTagName」のような関数はありますか?

$dom = new DOMDocument();
$dom->loadXML('<p><a id="1">test 1</a><span><a id="2">test 2</a></span></p>');
foreach($dom->getElementsByTagName('a') AS $node)
    echo($node->textContent);

ここでは、「id=1」のa-Tagのみが必要です。出来ますか?

4

3 に答える 3

5

XPathを使用して、探している要素を直接取得できます。

$dom = new DOMDocument();
$dom->loadXML('<p><a id="1">test 1</a><span><a id="2">test 2</a></span></p>');

$xpath = new DOMXpath( $dom);
$a = $xpath->query( '//a[@id="1"]')->item( 0);
echo $a->textContent;

これは印刷されます

test 1 
于 2012-09-05T19:05:11.677 に答える
1

ここではXPathを使用するのが最適です。次のPHPコードを見てください。

$dom = new DOMDocument();
$dom->loadXML('<p><a id="1">test 1</a><span><a id="2">test 2</a></span></p>');
$xpath = new DOMXpath($dom);
$elements = $xpath->query("//a[@id='1']");
于 2012-09-05T19:11:15.300 に答える
0

いいえ、getElementsbyTagNameではありません。

これらのことを行うために「発明された」XPathクエリを使用することをお勧めします。

于 2012-09-05T19:05:09.753 に答える