Php 使用simplexml按属性获取节点(及其子节点)
使用simplexml,可以根据父节点的属性获取节点的子节点。例如,我想在myItem1中获得一个变量列表(输出可能是小的,也可能是大的) 以下是我所追求的一些psuedo代码:Php 使用simplexml按属性获取节点(及其子节点),php,xml,simplexml,Php,Xml,Simplexml,使用simplexml,可以根据父节点的属性获取节点的子节点。例如,我想在myItem1中获得一个变量列表(输出可能是小的,也可能是大的) 以下是我所追求的一些psuedo代码: foreach($xml->xpath('//family[@name="myItem1"]')->variants->children() as $child) { $child->getName() } (当然这不起作用,但希望它描述了我正在尝试做的事情。) 示例XML: <
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>
...
...
...
...
谢谢。如果我理解正确,您希望获得给定节点的所有子节点的名称。有多种方法可以做到这一点,其中之一是迭代所有子项,如下所示:
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);
}
如果我理解正确,您希望获得给定节点的所有子节点的名称。有多种方法可以做到这一点,其中之一是迭代所有子项,如下所示:
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);
}
请尝试以下XPath表达式:
//family[@name="myItem1"]/variants/*
请尝试以下XPath表达式:
//family[@name="myItem1"]/variants/*
它并没有真正描述你想要达到的目标。请发布一个示例XML文档和几个“变体”的示例。对不起,我的帖子格式不正确。它现在正在显示。它的可能副本并不能真正描述您想要实现的目标。请发布一个示例XML文档和几个“变体”的示例。对不起,我的帖子格式不正确。现在正在显示。可能是的副本