Xml 无法使用XPath提取精确文本

Xml 无法使用XPath提取精确文本,xml,xpath,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> 持续时间: 7

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

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

持续时间:
7天前

有人建议吗?

请尝试
/div[contains(@class,'fnt20')]/text()[last()]
以获得7天前的结果“

更新: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);
$html=项目(1)
->节点价值);

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

注意,7天前
周围有空白
如果要截断空间,请使用normalize-space()