2014-01-29 66 views
0

內的simplexml的元素,我認爲那裏有更多的東西會在這裏,但它看起來像某些數據可在原始XML它就會在simplexml的元素通過我的SOAP調用設置後不可用我。訪問一個simplexml的元素

這裏的原始信息,我從SOAP調用(檢索到的W /的soapUI)回來了,請注意,尤其是企業郵箱的元素。

<GetSubscriberData_ByDrupal_IdResult><![CDATA[ 
    <SubscriberDataRoot> 
     <SubscriberData> 
      <city>MEDIA</city> 
      <state>PA</state> 
      <zip>19063-4112</zip> 
      <country>USA</country> 
      <phone>1231231244</phone> 
      <e_mail>[email protected]</e_mail> 
     </SubscriberData> 
    </SubscriberDataRoot>]]> 
</GetSubscriberData_ByDrupal_IdResult> 

這裏是SimpleXMLElement,它是從我的SoapClient調用中產生的var_dump'd。

object(SimpleXMLElement)#26 (1) { 
    ["SubscriberData"]=> 
    object(SimpleXMLElement)#33 (29) { 
    ["city"]=> 
    string(5) "MEDIA" 
    ["state"]=> 
    string(2) "PA" 
    ["zip"]=> 
    string(10) "19063-4112" 
    ["country"]=> 
    string(3) "USA" 
    ["phone"]=> 
    string(10) "1231231234" 
    ["e_mail"]=> 
    object(SimpleXMLElement)#36 (0) { 
    } 
    } 
} 

與一些類似於$soap_data->SubscriberData->city然而值得注意的的e_mail元件期望我可以訪問大部分數據並不能直接使用,它的另一個SimpleXMLElement。我已經試過遍歷它,使用asXML__toString,強制轉換爲(string) ..

(例如...)

php> var_dump($acct->SubscriberData->e_mail); 
object(SimpleXMLElement)#38 (0) { 
} 

php> var_dump($acct->SubscriberData->e_mail->asXML()); 
string(17) "<e_mail></e_mail>" 

php> var_dump($acct->SubscriberData->e_mail->__toString()); 
string(0) "" 

php> var_dump((string) $acct->SubscriberData->e_mail); 
string(0) "" 

,但我不能像其他任何字符串的訪問重要元素。我希望能夠像其他元素一樣獲取字符串值,例如$email = $acct->SubscriberData->e_mail。提前致謝。

回答

0

我不知道我可以測試/複製你的對象結構沒有你的肥皂的東西,但如果我把原始的XML,並試圖處理它,我不得不單獨處理CDATA塊。

$GetSubscriberData_ByDrupal_IdResult = simplexml_load_string($xmlSource); 
$SubscriberDataRoot = simplexml_load_string((string) $GetSubscriberData_ByDrupal_IdResult); 
$email = (string) $SubscriberDataRoot->SubscriberData->e_mail; 
echo $email; // assigned to var just for demonstration 
+0

Evenn只是解析內部XML我不能再現那個'object(SimpleXMLElement)#36'情況 – Scuzzy