Php 访问对象化XML中的元素
我在下面有一个xml字符串,我已经使用它变成了一个对象Php 访问对象化XML中的元素,php,xml,Php,Xml,我在下面有一个xml字符串,我已经使用它变成了一个对象 $content = mb_convert_encoding($content, "ASCII"); $obj = new SimpleXMLElement($content); obj的结构与xml完全匹配。但是,尝试在没有父“set”节点的情况下获取集合数组会导致问题。 我知道 从这里的内部,如果我执行$currentGroup->set操作,我会看到一个set节点,下面有编号0和1,下面是子测试的结构。 我的问题是,我尝试执行$cu
$content = mb_convert_encoding($content, "ASCII");
$obj = new SimpleXMLElement($content);
obj的结构与xml完全匹配。但是,尝试在没有父“set”节点的情况下获取集合数组会导致问题。
我知道
从这里的内部,如果我执行$currentGroup->set操作,我会看到一个set节点,下面有编号0和1,下面是子测试的结构。
我的问题是,我尝试执行$currentGroup->set->set(尝试在没有父对象的情况下获取集合数组),然后自动获取第一个集合,而没有其他集合。
所以您想要一个集合节点的数组?应该是$currentGroup->set->children()
除非我遗漏了什么。似乎你遗漏了一个关闭的
标记。不确定这是否是问题所在。只是注意到了。而且关闭的标记
没有打开的标记。非常感谢,这就是我一直在寻找的。有没有办法从同一行自动选择第一个节点?遗憾的是,PHP没有关闭如果要从返回数组的函数中取消对数组的引用,则必须首先将值存储在变量中。有关详细信息,请参阅。但是,如果您只需要第一个元素而不是集合,则只需使用$currentGroup->set->set[0]
。
foreach($obj->group as $currentGroup)
{
<global>
<group name="bce">
<sets>
<set name="a">
<subsets>
<subset name="bla"/>
<subset name="bla2"/>
<subset name="bla3"/>
</subsets>
</set>
<set name="b" />
<subsets>
<subset name="bla"/>
<subset name="bla2"/>
<subset name="bla3"/>
</subsets>
</set>
<set name="c" />
<subsets>
<subset name="bla"/>
<subset name="bla2"/>
<subset name="bla3"/>
</subsets>
</set>
<set name="d" />
<subsets>
<subset name="bla"/>
<subset name="bla2"/>
<subset name="bla3"/>
</subsets>
</set>
</subgroupones>
</group>
<group name="ert">
<sets>
<set name="aa">
<subsets>
<subset name="bla"/>
<subset name="bla2"/>
<subset name="bla3"/>
</subsets>
</set>
<set name="bb" />
<subsets>
<subset name="bla"/>
<subset name="bla2"/>
<subset name="bla3"/>
</subsets>
</set>
</subgroupones>
</group>
</global>