2012-03-28 48 views
0

访问元素我具有低于一个XML字符串我已经变成使用在物化XML

$content = mb_convert_encoding($content, "ASCII"); 
$obj = new SimpleXMLElement($content); 

OBJ的结构是完全匹配的XML对象。然而,尝试获取没有父“set”节点的数组的集合正在引起我的问​​题。 我做

foreach($obj->group as $currentGroup) 
{ 

从里面这里,如果我做$ currentGroup->设置然后我看到一个设置节点与下它的编号,0和1,以及其下的子测试的结构。 我的问题是我尝试做$ currentGroup->具 - >设置(尝试获得的套阵列时不父然后我得到自动的第一套,没有其他的人的。 enter image description here

<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> 
+1

好像你错过了一个封闭的''标签。不知道这是个问题。只注意到它。另外,闭合标签''没有开放标签。 – Gohn67 2012-03-28 23:19:23

回答

1

所以,你想要的的阵列设置节点?应该是$currentGroup->sets->children()除非我失去了一些东西。

+0

完美的感谢很多,这正是我期待的对于。是否有从同一行自动选择第一个节点的方法? – user391986 2012-03-29 17:59:20

+0

不幸的是,PHP不允许你从返回它们的函数中解引用数组,你必须先将这个值存储在一个变量中。请参阅[this old thread](http://marc.info/?l=php-general&m=120422624624319&w=2)了解更多信息。但是,如果你想要的只是第一个元素而不是集合,你可以简单地使用'$ currentGroup-> sets-> set [0]'。 – quickshiftin 2012-03-29 18:27:40