2014-01-29 2 views
0

여기서는 더 많은 일이 발생한다고 생각하지만 raw xml에서 사용할 수있는 특정 데이터가 내 비누 호출을 통해 simplexml 요소에 설정된 후에 사용할 수없는 것처럼 보입니다.simplexml 요소 내에서 simplexml 요소에 액세스

다음은 비누 호출에서 가져온 원시 정보입니다 (검색된 w/soapUI). 특히 e_mail 요소에 유의하십시오.

<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> 

그리고 여기에 내 SoapClient 호출에서 가져온 var_dump 된 SimpleXMLElement가 있습니다. $soap_data->SubscriberData->city 그러나 주목할만한 E_MAIL 요소에 가깝다 뭔가 예상대로 나는 대부분의 데이터에 액세스 할 수 있습니다

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) { 
    } 
    } 
} 

직접 다른 SimpleXMLElement는 사용할 수 없습니다. 나는에 .. (string)에 캐스팅, asXML__toString를 사용하여, 반복 처리를 시도했습니다

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

Even even 내부 XML을 구문 분석하면 해당 객체 (SimpleXMLElement) # 36 상황을 재현 할 수 없습니다. – Scuzzy