如,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>
----------------
说明返回结果为,函数为 GetDt2 的 DataTable对象,有两行(b1,b2) 两列(sdfs1,sdfs2)
表名为rr1,
但它在浏览器端以xml形式展示,或者 xmlhttp.responseText 或者 xmlhttp.responseXML
或者xmlhttp对象,,问题就是,怎么才能将 webservice返回的xml转成对象,
ps:
记得ajax的返回结果是可以直接变成对象的,
而webservice允许 WebMethod 定义为返回对象类型,却在端获取只能是xml,还是说开放的接口有限制,要自己写转换函数??
代码好像被改了,
<?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>
从 XML 标识语言转在对象,应该没有标准的接口。需要自己根据 XML 自定义的标识来生成生成的对象。
需要你的可以序列化,反序列化等。然后就可以用字符串等
解析xml不就行了吗?,,
解析是通用的吗,还是一种对象,一种写法?