删除DomXPath中的最后一个子节点

时间:2014-02-15 01:58:22

标签: php dom xpath

目前的结构如

<div class="...">
    //more html
    <div class="message-right">
       <div class="item1"> //more html </div>
       <div class="item2"> //more html </div>
       <div class="item3"> //more html </div>
    </div>
    //more html
</div>

我希望能够在类'message-right'中获取html内容,并删除最后一个子节点。 (在这种情况下'item3')

我应该留下'item1'和'item2'

中的html

到目前为止我已经

$dom = new DomDocument();
@$dom->loadHTML($html);
$finder = new DomXPath($dom);
$classname = "message-right";
$nodes = $finder->query("//*[contains(@class, '$classname')]");

//this is where I am stuck, need to remove the last child, 'item3'    

//this returns the html from 'message-right'
$html = $nodes->item(0)->c14n()

1 个答案:

答案 0 :(得分:0)

获取最后一个子元素(XPath将使这更容易)并删除它。

$delete = $finder->query("./*[last()]", $nodes->item(0))->item(0);
$delete->parentNode->removeChild($delete);

根据您真正需要的内容,您可能希望直接使用

获取(并随后删除)该元素
//*[contains(@class, '$classname')]/*[last()]