我正在尝试获取img和div,后者位于包含该img的div之后,它们都在一个查询中。所以我做了这个:
$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%)
<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文本.
发布于 2012-01-06 16:05:30
你的问题似乎是对的。
示例XML:
<div>
<div id="someid-1"><img src="foo"/></div>
<div class="spec_class">bar</div>
<div class="spec_class">baz</div>
</div>示例PHP代码:
$dom = new DOMDocument;
$dom->loadXml($xhtml);
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//div…') as $node) {
echo $dom->saveXML($node);
}产出(演示):
<img src="foo"/>bar注意,您必须迭代由DOMNodeList查询返回的XPath。
https://stackoverflow.com/questions/8760293
复制相似问题