我有一些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";
我尝试了各种组合 - 包括谓词中的'exists',我确信它是基本的xslt,但不是PHP(!)。
我已经google了加载...但是直到最后级别的谓词还没有出现,而且似乎PHP的xpath有它自己的味道,所以一般的XPath东西并不总是有用。
XPath没关系,这只是删除了第一个[
中的第一位,因为它不需要。
要输出XML,您需要将saveXML()
与要导出所有XML标记的节点一起使用...
$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>