我希望获得<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']
答案 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 xpath,How to get innerHTML of DOMNode?