2012-12-25 88 views
0

可能重複:
PHP get values from SimpleXMLElement arraysimplexml_load_string返回空節點

我使用simplexml_load_string()解析XML字符串。它正確讀取輸入,但不返回任何僅數據的空白節點。

我的XML數據是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<leads> 
    <auth> 
     <username>user</username> 
     <password>user</password> 
    </auth> 
</leads> 

而且功能:

$xmlObj = simplexml_load_string($xml); 

    if ($xmlObj) { 
     echo "Failed loading XML\n"; 
     foreach(libxml_get_errors() as $error) { 
      echo "\t", $error->message; 
     } 
    } 
    else{ 
     print_r($xmlObj); 
    } 

當我試圖打印出結果我得到一個空白節點像

<auth> 
    </username> 
    </password> 
</auth> 
+0

你的問題可能會,如果你實際提供的代碼,所以你如何在問題使用功能顯然變得更加清晰。你也沒有給出任何信息,你的期望輸出是什麼,所以你的問題很容易被誤讀,因爲你提供的輸出將是原始文檔。 – hakre

+0

原始XML字符串在哪裏?我問,因爲在你更新你的問題後,可能會有問題。你能提供一些樣品嗎?還是你逐字使用了這個樣本?因爲有了這些數據,它適用於我:http://eval.in/5334 - **小心:**你必須以這種方式檢查字符串加載成功,否則你會遇到一個問題:'if(false == = $ xmlObj){' - 也許這是你的問題? – hakre

+0

我將xml作爲web服務響應,並且我試圖解析這個響應 – sree

回答

0

您需要使用SimpleXMLElement::asXML() methodDocs來獲取XML,否則它會返回根節點的值,即我空的,因此是空的字符串。

所以這一切都很好,很棒。

此外,並作爲預謹慎,做正確的返回值檢查:

$obj = simplexml_load_string($xml) 
if ($obj === FALSE) { 
    throw new Exception('Failed to load XML string.'); 
} 

我希望這是有益的,帶來了曙光您的問題。

+0

不會引發異常 – sree

2

我得到了解決

$username = (string) $xmlObj->auth->username; 

我只是把「(串)」