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 回答