如何在 XPath 评论后获取下一个 HTML 元素?
How to get the next HTML element after a comment by XPath?
我通过 XPath
在 HTML 文档中获得注释
$xpath = new DOMXPath($doc);
$comments = $xpath->query('//comment()');
foreach ($comments as $comment)
{
echo $comment->nodeValue.PHP_EOL;
}
如何从 $comment
获取此循环中的下一个 HTML 元素?
$comment
之后的下一个元素是它的下一个兄弟元素。它应该存储在 nextSibling
属性:
foreach ($comments as $comment)
{
var_dump($comment->nextSibling);
}
您可以更改您的 XPath 表达式以使用 following-sibling
轴并说在注释后选择第一个节点...
$comments = $xpath->query('//comment()/following-sibling::*[1]');
如果您需要评论和下一个节点,您可以先获取评论,然后使用相对于该评论的 XPath 来获取以下节点...
$comments = $xpath->query('//comment()');
foreach ($comments as $comment)
{
echo $comment->nodeValue.PHP_EOL;
$next = $xpath->query("following-sibling::*[1]", $comment)[0];
echo $next->nodeValue.PHP_EOL;
}
我通过 XPath
在 HTML 文档中获得注释$xpath = new DOMXPath($doc);
$comments = $xpath->query('//comment()');
foreach ($comments as $comment)
{
echo $comment->nodeValue.PHP_EOL;
}
如何从 $comment
获取此循环中的下一个 HTML 元素?
$comment
之后的下一个元素是它的下一个兄弟元素。它应该存储在 nextSibling
属性:
foreach ($comments as $comment)
{
var_dump($comment->nextSibling);
}
您可以更改您的 XPath 表达式以使用 following-sibling
轴并说在注释后选择第一个节点...
$comments = $xpath->query('//comment()/following-sibling::*[1]');
如果您需要评论和下一个节点,您可以先获取评论,然后使用相对于该评论的 XPath 来获取以下节点...
$comments = $xpath->query('//comment()');
foreach ($comments as $comment)
{
echo $comment->nodeValue.PHP_EOL;
$next = $xpath->query("following-sibling::*[1]", $comment)[0];
echo $next->nodeValue.PHP_EOL;
}