ijunxiong 2016-01-18 08:49 采纳率: 0%
浏览 2361

从webservice获取成功的xml如何转成对象

如,webservice定义return System.Data.DataTable对象,
在浏览器端获取到xmlhttp对象,//xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
接收到 xmlhttp.responseText 为
-----------------
<?xml version="1.0" encoding="utf-8"?>

soap:Body




xs:complexTypexs:complexTypexs:sequence

/xs:sequence/xs:complexType/xs:element/xs:choice/xs:complexType/xs:element/xs:schema

<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">

 <DocumentElement xmlns="">


b145 2
b2
60 name22

 </DocumentElement>
</diffgr:diffgram>



/soap:Body
/soap:Envelope

----------------
说明返回结果为,函数为 GetDt2 的 DataTable对象,有两行(b1,b2) 两列(sdfs1,sdfs2)
表名为rr1,
但它在浏览器端以xml形式展示,或者 xmlhttp.responseText 或者 xmlhttp.responseXML
或者xmlhttp对象,,问题就是,怎么才能将 webservice返回的xml转成对象,

ps:
记得ajax的返回结果是可以直接变成对象的,
而webservice允许 WebMethod 定义为返回对象类型,却在端获取只能是xml,还是说开放的接口有限制,要自己写转换函数??

  • 写回答

5条回答 默认 最新

  • ijunxiong 2016-01-18 08:53
    关注

    代码好像被改了,
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
    <GetDt2Response xmlns="http://tempuri.org/">
    <GetDt2Result>
    <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="rr1" msdata:UseCurrentLocale="true">
    <xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="rr1"><xs:complexType><xs:sequence>
    <xs:element name="sdfs1" type="xs:string" minOccurs="0" /><xs:element name="sdfs2" type="xs:string" minOccurs="0" />
    </xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema>

    <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
    
     <DocumentElement xmlns="">
    

    <rr1 diffgr:id="rr11" msdata:rowOrder="0" diffgr:hasChanges="inserted">
    <sdfs1>b1</sdfs1><sdfs2>45 2</sdfs2></rr1>
    <rr1 diffgr:id="rr12" msdata:rowOrder="1" diffgr:hasChanges="inserted"><sdfs1>b2</sdfs1>
    <sdfs2>60 name22</sdfs2></rr1>

     </DocumentElement>
    </diffgr:diffgram>
    

    </GetDt2Result>
    </GetDt2Response>
    </soap:Body>
    </soap:Envelope>

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题