首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PHP中从Soap响应stdclass对象获取数据

在PHP中从Soap响应stdclass对象获取数据
EN

Stack Overflow用户
提问于 2013-03-06 02:30:39
回答 2查看 8K关注 0票数 0

我使用以下方法来获取webservice数据。

代码语言:javascript
运行
复制
$client = new SoapClient("http://empblr.dyndns.org/CentralHomeDelivery_Mob/Service.asmx?wsdl");


     $result = $client->GetAlladdress(array('customerid'=>36));

当I var_dump $result我得到,

代码语言:javascript
运行
复制
object(stdClass)[16]
  public 'GetAlladdressResult' => 
    object(stdClass)[17]
      public 'schema' => string '<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet"><xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"><xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="Table"><xs:complexType><xs:sequence><xs:element name="AdressID" type="xs:int" minOccurs="0"/><xs:element name="CustomerID" type="xs:int" minOccurs="0"/><xs:element name="LocationID" type="xs:int" minOccurs="0"/><xs'... (length=1030)
      public 'any' => string '<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"><NewDataSet xmlns=""><Table diffgr:id="Table1" msdata:rowOrder="0"><AdressID>643</AdressID><CustomerID>36</CustomerID><LocationID>176</LocationID><StreetName>asdf</StreetName><HouseNo>1234</HouseNo><AlternatePhone>5632256</AlternatePhone><LandMark>asdf </LandMark><MainLocID>2</MainLocID><locName>ANDOLANA CIRCLE</locName><MainLoc>Mysore    </MainLoc></Table><Table diffgr:id="Table2" m'... (length=1864)

如何从子节点<CustomerID>获取值并存储到数组中??

谢谢。。

EN

Stack Overflow用户

发布于 2013-03-06 13:03:24

通常,如果处于WSDL模式,SoapClient应该提供一个stdClass对象,该对象将这些值作为标准类属性提供。

如果不是这样(您的问题中的var_dump不清楚,因为它被截断了),则可以解析any属性中的XML,例如,使用SimpleXML parser

一些代码示例(Online Demo):

代码语言:javascript
运行
复制
$xml = new SimpleXMLElement($result->GetAlladdressResult->any);

# traversal
$table = $xml->NewDataSet->Table[0];
echo $table->LocationID, "\n", $table->MainLoc, "\n";

# xpath
echo $xml->xpath('//LocationID')[0], "\n", $xml->xpath('//MainLoc')[0], "\n";

它展示了访问数据的两种替代方法,第一种是标准遍历,第二种是通过运行xpath查询的xpath()方法。

票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15231386

复制
相关文章

相似问题

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