整个parentNode具有php DOM和xpath特定注释的属性?

时间:2013-04-22 08:46:25

标签: php xpath domdocument

我想输出带有属性(ID或类)

的注释的parentNode

如果我有这个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)? nodeValue无效。

当我是新手时,也欢迎对我的代码提出任何其他意见

1 个答案:

答案 0 :(得分: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>