首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DOMXPath联合提取

DOMXPath联合提取
EN

Stack Overflow用户
提问于 2012-01-06 15:36:42
回答 1查看 352关注 0票数 1

我正在尝试获取imgdiv,后者位于包含该imgdiv之后,它们都在一个查询中。所以我做了这个:

代码语言:javascript
复制
$nodes = $xpath->query('//div[starts-with(@id, "someid")]/img | 
//div[starts-with(@id, "someid")]/following-sibling::div[@class="spec_class"][1]/text()');

现在,我能够获得img标记的属性,但无法获得以下同级的文本。如果我分离查询(两个查询--第一个是针对img的查询,第二个是针对同级查询的查询),那么它可以工作。但是,我如何只用一个查询就能做到这一点呢?顺便说一句,语法没有错误。但不知何故,工会不起作用,或者也许我没有正确提取兄弟姐妹的内容。

下面是标记(它多次重复另一个文本和id="someid_%randomNumber%)

代码语言:javascript
复制
<div id="someid_1">
    <img src="link_to_image.png" />
    ...some text...
</div>

<div>...another text...</div>

<div class="spec_class">
...Important text...
</div>

我想得到一个查询-- link_to_image.png...Important文本.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-06 16:05:30

你的问题似乎是对的。

示例XML:

代码语言:javascript
复制
<div>
    <div id="someid-1"><img src="foo"/></div>
    <div class="spec_class">bar</div>
    <div class="spec_class">baz</div>
</div>

示例PHP代码:

代码语言:javascript
复制
$dom = new DOMDocument;
$dom->loadXml($xhtml);
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//div…') as $node) {
    echo $dom->saveXML($node);
}

产出(演示):

代码语言:javascript
复制
<img src="foo"/>bar

注意,您必须迭代由DOMNodeList查询返回的XPath。

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

https://stackoverflow.com/questions/8760293

复制
相关文章

相似问题

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