无法使用XPath提取确切的文本

时间:2013-06-05 11:52:56

标签: xml xpath

我正在尝试使用xpath从以下html获取“7天前”的文本 使用xpath //div[contains(@class,'fnt20')]我能够到达div中的文本,但我想在span之后得到确切的文本,即。只有“7天前”的文字 html如下:

<div class="fnt20">
   <span class="accessibilityOnly">Duration:</span>
        7 days ago
</div>

有人可以建议吗?

2 个答案:

答案 0 :(得分:0)

请尝试//div[contains(@class,'fnt20')]/text()[last()]获取结果“7 days ago

答案 1 :(得分:0)

更新:Ups!我发现此问题未标记为php。我应该清楚我正在使用PHP


虽然它有点脆弱,但以下代码可以正常工作:

$html = <<<EOF
<div class="fnt20">
   <span class="accessibilityOnly">Duration:</span>
        7 days ago 
</div>
EOF;

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

echo trim($selector->query('//div[@class="fnt20"]/text()')
  ->item(1)
  ->nodeValue);

注意:trim()的使用情况并不令人满意。但它的确有效。我将研究如何避免这种情况,以获得 xpath解决方案