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

从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 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?