【问题标题】:XML Xpath using PHP使用 PHP 的 XML Xpath
【发布时间】:2015-03-16 18:58:56
【问题描述】:

这是我的 XML:

<div class="main">  
    <div class="workshoplist-main">
        <div class="toggler pointer">
            <i class="icon-chevron-down"></i> 
            <span id="rpt_0_lblSectionHeader_0">Wednesday, March 18, 2015 (10:00 AM - 11:00 AM)</span> 
            <p>Description of March info</p>
        </div>
    </div>
    <div class="workshoplist-main">
        <div class="toggler pointer">
            <i class="icon-chevron-down"></i> 
            <span id="rpt_0_lblSectionHeader_1">Thursday, April 16, 2015 (10:00 AM - 11:00 AM)</span> 
            <p>Description of April info</p>
        </div>
    </div>
    <div class="workshoplist-main">
        <div class="toggler pointer">
            <i class="icon-chevron-down"></i> 
            <span id="rpt_0_lblSectionHeader_2">Friday, March 19, 2015 (10:00 AM - 11:00 AM)</span> 
            <p>Description of March info</p>
        </div>
    </div>  
</div>  

我想在span 元素中查找单词March,该元素包含id 中的lblSectionHeader

我想要的返回值是:

 Wednesday, March 18, 2015 (10:00 AM - 11:00 AM)
 Friday, March 19, 2015 (10:00 AM - 11:00 AM)

我的代码是:

xpath("//div[contains(@class,'workshoplist-main') and //span[contains(@id,'lblSectionHeader')][text()='March']]");

我没有得到任何结果。如果有人可以提供帮助,那就太好了。

【问题讨论】:

  • 那不是 xml 文件。

标签: php xml xpath


【解决方案1】:

以下查询有效:

$html = <<<'EOF'
    ... Your HTML comes here ...
EOF;

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

$selector = new DOMXPath($doc);
$query = "//div[contains(@class,'workshoplist-main')]//span[contains(@id,'lblSectionHeader')][contains(text(), 'March')]";

foreach($selector->query($query) as $node) {
    // do something with that node
    var_dump($node);
}

您在查询中误用了 and 关键字。如果您想在&lt;div&gt; 标签下方选择&lt;span&gt; 标签(无论嵌套级别如何),请使用//div//span,而不是//div and //span

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 2011-05-29
    • 2015-12-05
    • 1970-01-01
    相关资源
    最近更新 更多