首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问simplexml元素中的simplexml元素

访问simplexml元素中的simplexml元素
EN

Stack Overflow用户
提问于 2014-01-30 07:25:48
回答 1查看 36关注 0票数 0

我认为这里还有更多的原因,但是看起来原始xml中的某些数据在通过soap调用在simplexml元素中设置后对我来说是不可用的。

以下是我从soap调用(使用soapUI检索)中返回的原始信息,请特别注意e_mail元素。

代码语言:javascript
复制
<GetSubscriberData_ByDrupal_IdResult><![CDATA[
    <SubscriberDataRoot>
        <SubscriberData>
            <city>MEDIA</city>
            <state>PA</state>
            <zip>19063-4112</zip>
            <country>USA</country>
            <phone>1231231244</phone>
            <e_mail>some_email@somewhere.com</e_mail>
        </SubscriberData>
    </SubscriberDataRoot>]]>
</GetSubscriberData_ByDrupal_IdResult>

下面是在我的SoapClient调用中产生之后我使用var_ SimpleXMLElement进行的转储。

代码语言:javascript
复制
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)

(例如...)

代码语言:javascript
复制
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。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-01-30 07:32:16

我不确定是否可以在没有soap的情况下测试/重现您的对象结构,但是如果我获取原始的XML并尝试处理它,我将不得不单独处理CDATA块。

代码语言:javascript
复制
$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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21444884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档