PHP XMLNode,DOMnode Xpath选择谓词的孙属性值



>我有一些 xml

<div> First Element
<div>
<level3 name="fred">
</level3>
</div>
</div>
<div> Second Element
<div>
<level3 name="dave">
</level3>
</div>
</div>
<div> Third Element
<div>
<level3 name="jim">
</level3>
</div>
</div>
<div> Fifth Element
<div>
<level3 name="mike">
</level3>
</div>
</div>

我想从特定的顶级div 元素中提取 xml(作为字符串,包括 xml 标签(,该元素基于其 level3 的孙子名称。

因此,为了获得名为 jim 的 level3 节点上方的顶级div,我一直在研究以下内容:

$sname="jim";
$spath = new DOMXPath($doc);
// Find a div with a child div with a level3 with a matching attribute name. 
$spexp = "//div[./div/level3[contains(@name,"$sname")]]";
$story = $spath->evaluate("$spexp");
echo $story->item(0)->nodeValue . "n";

我已经尝试了各种组合 - 包括谓词中的"存在",我确信这是基本的 xslt,但不是在 PHP(!

我用谷歌搜索过负载...但是超过直接级别的谓词还没有出现,而且似乎 PHP 的 xpath 有自己的味道,所以一般的 XPath 东西并不总是有用的。

XPath 还可以,这只是删除了第一个[内的第一个位,因为它不需要。

要输出 XML,您需要对要导出所有 XML 标记的节点使用saveXML()...

$sname="jim";
$spath = new DOMXPath($doc);
// Find a div with a child div with a level3 with a matching attribute name.
$spexp = "//div[div/level3[contains(@name,"$sname")]]";
$story = $spath->evaluate("$spexp");
echo $doc->saveXML($story->item(0)). "n";

给。。。

<div> Third Element
<div>
<level3 name="jim">
</level3>
</div>
</div>

最新更新