我希望在XML
文件中提取叶节点的父节点,php
:
<root>
<level name="level1">
<content name="c1/>
</level>
<level name="level2>
<level name="sub-level-2a">
<content name="c2" />
</level>
<level name="sub-level-2b">
<level name="sub-sub-level-2b">
<content name="c3" />
</level>
</level>
</level>
</root>
所以在上面的XML中,叶子可以有好几层深度,被认为是叶子的元素是:
<content name="c1" />
<content name="c2" />
<content name="c3" />`
我如何提取上述每个叶子的父叶子的name
属性,以及每个叶子的输出:<leaf-name-attribute> - <parent-name-attribute>
?
I have try:
$content_node_parents = $xml->xpath('//content/parent::*');
foreach ($content_node_parents as $content_node_parent)
{
echo $content_node_parent['name']." - ".$content_node_parent->content['name']."'n";
}`
上面的工作完全OK,但只有<content>
元素不是叶子,也被提取
使用xpath选择所需值
//*[*[not(descendant::*)]]/@name | //*[not(descendant::*)]/@name
返回Attribute='name="level1"'
Attribute='name="c1"'
Attribute='name="sub-level-2a"'
Attribute='name="c2"'
Attribute='name="sub-sub-level-2b"'
Attribute='name="c3"'