2 ijunxiong ijunxiong 于 2016.01.18 16:49 提问

从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个回答

91program
91program   Ds   Rxr 2016.01.18 16:57

从 XML 标识语言转在对象,应该没有标准的接口。需要自己根据 XML 自定义的标识来生成生成的对象。

91program
91program 回复ijunxiong: 应该有?这个我不确定。
2 年多之前 回复
ijunxiong
ijunxiong 那对于常用的DataTable DataSet 也应该有统一的转换代码吧?
2 年多之前 回复
ijunxiong
ijunxiong   2016.01.18 16: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>

oyljerry
oyljerry   Ds   Rxr 2016.01.18 16:58

需要你的可以序列化,反序列化等。然后就可以用字符串等

ijunxiong
ijunxiong 不是很明白
2 年多之前 回复
Royal_lr
Royal_lr   Ds   Rxr 2016.01.18 17:47

解析xml不就行了吗?,,

ijunxiong
ijunxiong xsd的解析不懂怎么写,好像挺复杂的
2 年多之前 回复
ijunxiong
ijunxiong   2016.01.20 16:18

解析是通用的吗,还是一种对象,一种写法?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
应用于webservice的List转xml方法
今天要做webservice的接口,List泛型变成xml时需要转换,而且实体的属性名称也要转换成调用方明白的属性(中文),所有仿照网上的代码做了一个转换的例子。 //===================================转换方法================
WebService和xml注解
WebService和xml注解 意思:就是把实体类以对象的形式发布到webService上,一般的情况是以xml的形式存储的,现在以实体的形式存储到webService上,也就是在webService上生成的每一个xml标签都是与实体想对应的。 实现步骤: 1.@XmlType(name = "UnitContentBean") @XmlAccessorType(XmlAccessTyp
Webservice基于xml的数据传输
Webservice基于xml的数据传输 以xml字符串进行请求校验,然后把数据以xml形式进行返回,实现数据的传输,可以在定义xml的数据格式以及要验证的方式。   1,把axis2整合进入项目中 首先去官网下载aixs2, 把axis2中的    Conf文件夹,lib中的jar包,repository下面的modules文件夹和services文件夹拷贝到项目中的WEB-INF下
如何让WebService的返回类型不是XML
在asmx中不要用return返回数据 直接用Context.Response.Write();
WebService + xsd XML解析
【无纸化需求】有一个3个工作日的需求,调用工商局WebService接口,获取XML解析入库呈现到页面上。 本次开发主要收获, 1 、了解了通过IDE生成webservice客户端生成和调用; 2、了解xsd文件的编写; 3、了解了XML到Bean转换过程; 问题:简述xsd校验的利与弊!
研究一下 项目 webservice xml和java对象的相互自动转换,json和java对象的相互自动转换
研究一下 项目 webservice xml和java对象的相互自动转换,json和java对象的相互自动转换
Webservice xml解析
new Thread(new Runnable() { @Override public void run() { HttpTransportSE se=new HttpTransportSE("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx"); SoapSerializationEnve
WebService XML 提交数据
简单、入门的Webservice 通过Xml方式提交数据到对方接口的问题。
拼接xml调用webservice
拼接xml调用webservice 拼接xml调用webservice 拼接xml调用webservice
WebService(2)-XML系列之Java和Xml之间相互转换
本文主要讲述:使用jaxb完成对象和xml之间的转换,并附源码下载。