2012-09-24 42 views
0

说我们有这个XML文件:PHP的SimpleXML直接访问子元素时父不详

<root_element> 
    <element_1> 
     <hello_element> 
      Hello1 
     </hello_element> 
    </element_1> 

    <element_1> 
     <element_2> 
      ... 
      <element_n> 
      <hello_element> 
       Hello2 
      </hello_element> 
      </element_n> 
      ... 
     </element_2> 
    </element_1> 

</root_element> 


$hello = new SimpleXMLElement('hello.xml'); 
echo $hello->element_1[0]->hello_element; 

输出为:Hello1

echo $hello->element_1[1]->element_2-> ... ->element_n->hello_element; 

输出为:Hello2

echo $hello->element_1[1]->hello_element; 

的输出是:

是否有可能在不知道父元素的名称或编号的情况下直接访问子元素?

回答

0

是的,你可以。使用xpath

我认为$simpleXML->xpath('/*')会得到最后的项目。

$simpleXML->xpath('//*/*/*')这将获得第三级项目。

(未测试)

SimpleXML::xpath

+0

可能的工作,但我无法弄清楚到底如何。只有两个已知的元素是“element_1”和“hello_element”。这两者之间的元素的名称和/或数量是未知的。当然,我们认为元素之间的未知元素不能与两个已知元素具有相同的名称。 – glx51mm

+0

你需要找什么? – CappY

+0

其实最好的解决方案是: echo $ hello-> element_1 [1] - > hello_element;会输出“Hello2”。不幸的是,它不是,但这是我需要以某种方式实现的。 – glx51mm