PHP和XML:迭代XML's叶元素


PHP and XML: Iterate an XML's leaf elements

我希望在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"'