2012-03-13 115 views
7

的某些屬性當我print_r()可變$xmlObject引用的SimpleXMLElement對象,我看到了以下結構:訪問一個SimpleXMLElement對象

SimpleXMLElement Object 
(
    [@attributes] => Array 
     (
      [uri] => /example 
     ) 

    [result] => SimpleXMLElement Object 
     (
      [message] => Record(s) added successfully 
      [recorddetail] => Array 
       (
        [0] => SimpleXMLElement Object 
        ... 
       ) 
     ) 
) 

通知的$xmlObject->result->message財產怎麼看起來它只是一個字符串。但是,如果我這樣做print_r($xmlObject->result->message),我得到如下:

SimpleXMLElement Object 
(
    [0] => Record(s) added successfully 
) 

所以在這一點上,我很困惑。在這種情況下,爲什麼$xmlObject->result->message被標識爲SimpleXMLElement Object的實例,當打印完整$xmlObject的結果沒有提示這種情況?

而我該如何實際訪問此值?我試過$xmlObject->result->message[0],但它只是打印出同樣的東西(即我發佈的最後一個代碼片段)。

回答

7

SimpleXMLElement上使用print_rvar_dump時獲得的表示與內部結構很少有關。例如,您沒有財產@attributes您可以通過$element['@attributes']['uri']訪問。你只是做$element['uri']

這是簡單的方式。 SimpleXmlElement對象表現不同。請確保您使用SimpleXML之前閱讀PHP手冊中的例子:

要詳細瞭解它的實現,你必須看看源代碼:

要打印$xmlObject->result->message你只是做echo $xmlObject->result->message。這將自動將SimpleXmlElement字符串加密。

+5

+1只是輸入一個類似的答案。值得指出的是,如果你想把一個元素的字符串值賦給一個變量,你需要明確地將它轉換爲一個字符串。例如'$ message =(string)$ xmlObject-> result-> message' – vascowhite 2012-03-13 20:58:46