Php XPath选择特定节点后的文本
您尝试的此XPath将只返回元素,不包括您似乎感兴趣的文本节点:Php XPath选择特定节点后的文本,php,xpath,web-scraping,Php,Xpath,Web Scraping,您尝试的此XPath将只返回元素,不包括您似乎感兴趣的文本节点: $email = $xmlPageXPath->query('//*[preceding-sibling::h3[text()="Contact Information"]]'); $tag="contactinformation"; $XML.=createXMLtags($tag,nodelist2string($email)); 您可以使用text()来选择文本节点,例如: //*[preceding-sibling
$email = $xmlPageXPath->query('//*[preceding-sibling::h3[text()="Contact Information"]]');
$tag="contactinformation";
$XML.=createXMLtags($tag,nodelist2string($email));
您可以使用text()
来选择文本节点,例如:
//*[preceding-sibling::h3[text()="Contact Information"]]
搜索标题,并返回下面的第一个文本节点
//h3[.=“联系信息”]/以下同级::text()[1]
如果有什么东西包裹着这两个标签,例如
//text()[preceding-sibling::h3[.="Contact Information"]]
嗯,我想你的HTML被呈现出来,而不是显示为代码…修复了它,请在代码之前使用空格来正确格式化它。这段代码是否在另一个节点内?这部分文本是从word复制和粘贴的,这意味着文本内带有多个标记。例如是否可以在“”到达之前保留所有文本?是的,这是可能的。将模式应用于您的问题应该相当容易。我看到了主题,但无法应用它。这段代码正在运行“//text()[preference::h3[.=“Contact Information”]]”,但它也会获取页面的其余部分。我想在“”到达时停止它。谢谢,您需要做的是测试
是否在文本节点之后://text()[previous::h3[.=“Contact Information”]和following:div[@class=“clr”]]
。这修复了//text()[previous::h3[.=“Contact Information”]和following::h3[text()=“General”]
这段代码正在工作'//text()[previous::h3]=“联系人信息”]],但它也会获取页面的其余部分。我想在“”到达时停止它。如果我添加前面的同级,则它会获取一半文本,因为文本是从word复制的,并且具有html标记。请检查Jens Erat注释。添加条件和以下内容:div[@class=“clr”]
似乎可以解决这个问题。如果这不是你想要的,我建议编辑这个问题(或者更好,发布一个新问题),并包括演示问题的示例html。
//text()[preceding-sibling::h3[.="Contact Information"]]
<div>
<h3>Contact Information</h3> To Apply : Please send your CV and cover
letter to DAIIDEANEW2012@gmail.com include Grants Manager - Jalalabad
in the subject line of the application.
</div>