【发布时间】:2015-09-09 11:41:48
【问题描述】:
我希望在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>?
我试过了:
$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";
}`
上面的工作完全没问题,但只有<content> 不是叶子的元素也被提取了
【问题讨论】:
-
你尝试了什么?结果你到底想要什么?你指的是离开和父母,但你的例子有内容和父母节点。
-
对于每个
<content>,我希望在<level>中拥有其父级的name属性。 -
作为一般策略,通过 xpath 选择所有内容节点,遍历它们,检索它们的 name-attribute 和 xpath 以检索其父属性。随时分享您的代码和结果并完善您的问题。