2012-01-30 84 views
0

我無法訪問我的SimpleXML內容的子節點。我已經嘗試了一些變體,如$xmlData->id$xmlData['id']從SimpleXML訪問子節點的內容

我對這方面有點新,所以任何幫助將不勝感激。

代碼示例:

object(SimpleXMLElement)#23 (10) { 
    ["id"]=> string(10) "yTZn1JIaaa" 
    ["first-name"]=> string(6) "First Name" 
    ["last-name"]=> string(6) "Last Name"... 
+1

什麼是錯誤信息?你問的是哪個孩子節點? – hakre 2012-01-30 17:14:28

+0

嗯,似乎' - > ID'應該工作...什麼是您的輸入XML? – Wrikken 2012-01-30 17:15:57

+0

[顯示使用php simplexml的XML數據]的可能重複(http://stackoverflow.com/questions/5833788/display-data-from-xml-using-php-simplexml) – Gordon 2012-01-31 09:21:36

回答

1

我試圖重建片段:從簡單的XML的$xmlData

$xmlData = simplexml_load_string($string); 
    $person = $xmlData->documentElement; 
    $id = $xmlData->id; 

瓦爾轉儲

<?php 
$string = "<person><id>1</id><firstname>Foo</firstname><lastname>Bar</lastname></person>"; 
$xmlData = simplexml_load_string($string); 
echo $xmlData->id . " - " . $xmlData->firstname . " - " . $xmlData->lastname; 
?> 

這對我工作得很好 - 在輸出是:

1 - Foo - Bar 

您可以看到,我的名字和姓氏標記名與您的名稱不同 - 短劃線有時會導致麻煩。如果你需要的破折號,做這種方式來代替:

echo $xmlData->id . " - " . $xmlData->{'first-name'} . " - " . $xmlData->{'last-name'}; 

不管怎麼說,在id工作得很好......所以也許你有一個可以防止您的腳本運行不正常,另一個錯誤?如果你可以發佈你的XML字符串,也許會有幫助。

乾杯, 最大

P.S:你爲什麼要執行這條線?

$person = $xmlData->documentElement; 
+0

非常感謝!是的,短跑是有問題的。 {'a'}使得方法有意義。現在一切正常。我原本沒有在代碼中的$ person =行,但看過更多的例子後,試了一下。當然,沒有幫助。 – jsuissa 2012-01-30 18:06:07

+0

@ jsuissa技術上來說,這個答案和你聲稱不工作的代碼是一樣的。請你指出現在突然發生的確切問題是什麼? – Gordon 2012-01-30 18:26:26

+0

當然 - 似乎沒有包含$ xmlData-> first-name的括號只有失敗,但是{'first-name'}就像它的工作。我不知道爲什麼我自己。想知道這可能與使用Codeigniter有關嗎? – jsuissa 2012-01-30 23:42:42