0

我想用属性(ID或类)输出评论的父节点

如果我有这个 html 代码

<div><span><!--test--></span><div class="myclass"><!--test_comment--></div></div>

我想要以下输出

<div class="myclass"><!--test_comment--></div>

如果我有这个 html 代码

<div><span id="myid" style="color:blue;font-weight:bold"><!--test_comment--></span><div class="myclass"><!--test--></div></div>

我想要以下输出

<span id="myid" style="color:blue;font-weight:bold"><!--test_comment--></span>

这是我的带有 xpath 的 php DOM 代码

<?php
$html = <<<STR
    <div><span><!--test--></span><div class="myclass"><!--test_comment--></div></div> 
STR;

$dom = new DOMDocument;
$dom->loadHTML($html);

$xpath = new DOMXPath($dom);
$node = $xpath->query('//comment()');

$myComment = $node->item(1)->textContent; // <!--test_comment-->
$myNode = $node->item(1)->parentNode->nodeName; // div

echo $node->item(1)->parentNode->nodeValue; //NOT WORKING

echo "<" . $myNode . ">" . $myComment . "</" . $myNode . ">";

?>

问题是我不知道如何搜索特定的评论()。想要类似的东西$xpath->query('//comment() == "test_comment"');

我的php代码导致

<div>test_comment</div>

如何获取 div 中的属性(类或 ID)?节点值不工作。

当我是新手时,也欢迎对我的代码进行任何其他评论

4

1 回答 1

0
<?php
$dom = new DOMDocument;
$dom->loadHTML(data());

$xpath = new DOMXPath($dom);
$node = $xpath->query('//*[comment()]');
foreach( $node as $p ) {
    echo 'output: ', $dom->saveXML($p), "\r\n";
}


function data() {
    return <<< STR
<div><span id="myid" style="color:blue;font-weight:bold"><!--test--></span><p>no comment here</p><div class="myclass"><!--test_comment--></div></div> 
STR;
}

印刷

output: <span id="myid" style="color:blue;font-weight:bold"><!--test--></span>
output: <div class="myclass"><!--test_comment--></div>
于 2013-04-22T08:55:07.447 回答