這是print_r()
運行的一個典型的SimpleXMLElement對象的輸出:「在符號」@在SimpleXML對象?
SimpleXMLElement Object
(
[@attributes] => Array
(
)
)
什麼是@符號是什麼意思?
這是print_r()
運行的一個典型的SimpleXMLElement對象的輸出:「在符號」@在SimpleXML對象?
SimpleXMLElement Object
(
[@attributes] => Array
(
)
)
什麼是@符號是什麼意思?
這是一個SimpleXMLElement對象。 '@attributes'行是來自XML元素的attributes的內部表示。使用SimpleXML的函數從這個對象獲取數據,而不是直接與它交互。
所有關於誤差控制這些問題的答案是不正確的。 @並不意味着任何東西。這就是財產如何在內部呼叫,但不依賴於此。在處理SimpleXML時不要依賴print_r()
或var_dump()
。 SimpleXML的做了很多沒有被正確地print_r()
和var_dump()
爲代表的「神奇」的事情。
如果你需要知道什麼是「內部」一個XML片段,只要使用就可以了->asXML()
。
對不起,不能作爲嘉賓但是對於其他人誰在這裏結束了,像我一樣......我創造我自己的Joomla表單字段和Joomla創造各種東西的一個非常「有趣」的對象發表評論。現在,我不想成爲一名SimpleXML專家,我想要的只是原始標籤文本,這些標籤文本在@attributes中被鬆動了。
後有點"hmmm, I wonder if this works?"™
我發現這是訪問這些值的最簡單的方法:他們沒有說謊
var_dump($simpleXMLObject);
/* Result */
object(SimpleXMLElement)
public '@attributes' =>
array (size=3)
'name' => string 'awesome'
'label' => string 'Awesome Label'
'type' => string 'typeOfAwesome'
echo $simpleXMLObject->attributes()->label; // Awesome Label
$simpleXMLObject->attributes()->label = 'Different Day, Different Awesome';
echo $simpleXMLObject->attributes()->label; // Different Day, Different Awesome
。它確實很簡單。
我沒有足夠的代表對user3098738發表評論......但想驗證他的迴應。這真的很簡單。任何時候在SimpleXML中運行@屬性...使用
$simpleXMLObject->attributes()
$simpleXMLObject->key->attributes()
我正在使用僅提供XML格式的數據的HTTP API。所以首先我將它加載到SimpleXML中,並且也被@attributes問題困惑了。我如何獲得它包含的寶貴數據? print_r()困惑我。
我的解決辦法是創建通過用foreach SimpleXML對象陣列和迭代變量爲0環路和在與attribues()方法的數據獲取,並將其加載到我創建的數組。在foreach循環結束之前迭代。
所以的print_r()從表示本去:
SimpleXMLElement Object
(
[@attributes] => Array
(
[ID] => 1
[First] => John
[Last] => Smith
)
)
爲了更加可用正常陣列。這很好,因爲我希望可以根據需要快速將數組轉換爲json。
我的代碼如下:
$obj = simplexml_load_string($apiXmlData);
$fugly = $obj->Deeply->Nested->XML->Data->Names;
$people = array();
$i = 0;
foreach($fugly as $val)
{
$people[$i]['id'] += $val->attributes()->ID;
$people[$i]['first'] = "". $val->attributes()->First;
$people[$i]['last'] = "". $val->attributes()->Last;
$i++;
}
速記將PHP的的setType()函數是怪異/越野車,所以我增加了+確保ID是整數並添加引用以確保名稱是字符串。如果沒有某種類型的變量轉換,那麼您將要將SimpleXML對象加載到您創建的數組中。
的print_r()的最終結果:
Array
(
[0] => Array
(
[id] => 1
[first] => John
[last] => Smith
)
[1] => Array
(
[id] => 2
[first] => Jane
[last] => Doe
)
)
但爲什麼用@符號顯示呢? – cambraca 2010-12-01 18:55:37
我不知道爲什麼。我想,SimpleXML決定命名數組元素。 – 2010-12-01 18:58:26
@Rocket我找不到包含變量名稱@的方法 – cambraca 2010-12-01 19:00:56