使用<h2>标记</h2>获取跨越文本的Xpath查询

时间:2014-08-19 13:19:22

标签: php xpath

我希望获得<span class="general2">之后的所有文字,包括<h2>代码

我的Html内容如下

    <span class="general2" itemprop="articleBody"> I WANT THIS TEXT <a href="url">I WANT THIS TEXT</a>I WANT THIS TEXT<br />

<h2>I WANT THIS TEXT AND ALSO PRESERVE THE TAG</h2><br />
I WANT THIS TEXT</span>

我尝试了查询

//span[contains(@class,'general2')]

但是它给了我所有的文本作为纯文本。想要像

这样的东西
//span[contains(@class,'general2')]/*[text() or local-name()='h3']

2 个答案:

答案 0 :(得分:0)

由于您需要非常不同的元素,因此最好使用union运算符|将不同的元素连接在一起。您可以先获取<span/子项的所有文本元素,然后获取<a/>的文本元素以及最后但并非最不重要的<h2/>元素。这应该有效:

//span[contains(@class,'general2')]/text() | //span[contains(@class,'general2')]/h2 | //span[contains(@class,'general2')]/a/text()

使用XPath 3.0可以写得更优雅,因为它允许函数作为步骤:

//span[contains(@class,'general2')]/(text() | h2 | a/text())

答案 1 :(得分:0)

这是您的主机编程语言的任务。 XPath的工作只是选择相关元素,然后你需要找到一种方法使用PHP来获取所选元素的内部HTML 标记。也许这样的事情(我不是任何方式的PHP家伙):

$span = $xpath->query('//span[contains(@class,'general2')]');
echo $dom->saveXML($span->item(0));

PHP引用以获取上述代码段:Get inner HTML of parent element with php and xpathHow to get innerHTML of DOMNode?