2012-09-24 102 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