【问题标题】:How to select the right div by class with Xpath?如何使用 Xpath 按类选择正确的 div?
【发布时间】:2017-08-14 23:40:47
【问题描述】:
$divs = $xpathsuj->query("//div[@class='txt-msg  text-enrichi-forum ']");
$div = $divs[$i];

使用这个 XPath 命令,我可以选择具有“txt-msg text-enrichi-forum”类的 div:

<div class="bloc-contenu">
    <div class="txt-msg  text-enrichi-forum ">
        <p>Tu pourrais &eacute;crire en FRANCAIS si ce n'est pas trop demand&eacute;?  
            <img src="http://image.jeuxvideo.com/smileys_img/54.gif" alt=":coeur:" data-code=":coeur:" title=":coeur:" width="21" height="20" /> 
        </p>
    </div>
</div>

但不是这个:

<div class="bloc-contenu">
    <div class="txt-msg  text-enrichi-forum ">
        <p> 
            <img src="http://image.jeuxvideo.com/smileys_img/42.gif" alt=":salut:" data-code=":salut:" title=":salut:" width="46" height="41" />
        </p>
    </div>
    <div class="signature-msg  text-enrichi-forum ">
        <p>break;</p>
    </div>
</div>

我做错了什么?

【问题讨论】:

  • $div->nodeValue 在第一种情况下返回
    的 innerHTML,但在第二种情况下不返回任何内容

标签: php html xpath domxpath


【解决方案1】:

我已经对 XML 的两个部分都进行了尝试,并且似乎两者都可以使用,但是间距可能存在一些问题。

在您的 XPath 查询中,您正在寻找 'txt-msg text-enrichi-forum ' 的完全匹配,它在 txt-msg 之后有两个空格,在最后一部分之后有一个空格。如果缺少任何空格,则不会找到该元素。

如果你把它改成……

$divs = $xpathsuj->query("//div[contains(@class,'txt-msg') and contains(@class,'text-enrichi-forum')]");
foreach ( $divs as $div )   {
    echo $doc->saveXML($div).PHP_EOL;
}

应该宽容一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2012-02-07
    相关资源
    最近更新 更多