使用simplexml,是否可以根据父级的属性获取节点的子节点。例如,我想获得myItem1中变体的列表(输出将是小的,大的)
以下是我所追求的一些伪代码:
foreach($xml->xpath('//family[@name="myItem1"]')->variants->children() as $child) {
$child->getName()
}
(当然这不起作用,但希望它描述了我正在尝试做的事情。)
示例XML:
<library>
<family name="myItem1">
<variants>
<small>
...
</small>
<large>
...
</large>
</variants>
</family>
<family name="myItem2">
<variants>
<small>
...
</small>
<medium>
...
</medium>
</variants>
</family>
</library>
谢谢。
答案 0 :(得分:1)
如果我理解正确,您希望获取给定节点的所有子节点的名称。有各种方法可以做到这一点,其中之一是迭代所有孩子,如下:
foreach ($xml->xpath('//family[@name="myItem1"]') as $family)
{
$variants = array();
foreach ($family->variants->children() as $name => $node)
{
$variants[] = $name;
}
// in case there are duplicates you can do
$variants = array_unique($variants);
var_dump($variants);
}
答案 1 :(得分:0)
尝试以下XPath表达式:
//family[@name="myItem1"]/variants/*