首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DOMXPath匹配文本

DOMXPath匹配文本
EN

Stack Overflow用户
提问于 2015-02-22 01:36:26
回答 2查看 96关注 0票数 0

代码示例:

代码语言:javascript
复制
$html = <<<END
  <tr>
    <td>Text-1</td>
  </tr>

  <tr>
    <td>Blah 1</td>
    <td>Blah 2</td>
    <td>Blah 3</td>
    <td>Blah 4</td>
  </tr>

  <tr>
    <td>Text-2</td>
  </tr>

  <tr>
    <td>Blah 1</td>
    <td>Blah 2</td>
    <td>Blah 3</td>
    <td>Blah 4</td>
  </tr>
END;

$dom = new DOMDocument(); 
$dom->preserveWhiteSpace = false;
$dom->loadhtml($html);
$xpath = new DOMXPath($dom);

   // Grab the text
$nodes = $xpath->query('//td[contains(text(), "Text-2")]|//td[contains(text(), "Blah 1")]/following-sibling::td');

echo $nodes->item(0)->textContent;

我尝试在Text-2下抓取Bla2,问题是在Text-1下抓取Bla2

EN

回答 2

Stack Overflow用户

发布于 2015-02-22 20:17:09

首先,找到具有<td>子级和"Text-2"<tr>,然后向下遍历下一个同级,直到找到一个具有"Blah 1"<td>。答案是它的下一个兄弟。

代码语言:javascript
复制
//tr[contains(td/text(), "Text-2")]/following-sibling::tr/td[contains(text(), "Blah 1")]/following-sibling::td'
票数 0
EN

Stack Overflow用户

发布于 2015-02-23 01:41:27

找到了答案:

代码语言:javascript
复制
//*[text()='Text-2']/following::td[text()='Blah 1']/following-sibling::td

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28648915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档