知识大全 调用.NET XML Web Services返回数据集合二

Posted

篇首语:枕上从妨一夜睡,灯前读尽十年诗。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 调用.NET XML Web Services返回数据集合二相关的知识,希望对你有一定的参考价值。

调用.NET XML Web Services返回数据集合二  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  下面就是在Internet Exploerer里直接调用这两个Web Method所得到的XML格式的结果     表 GetPersons()的返回结果  <?xml version= encoding= utf ?>  <ArrayOfPerson xmlns:xsd=   xmlns:xsi= instance   xmlns= >  <Person>  <Name>Alice</Name>  <Gender>Female</Gender>  </Person>  <Person>  <Name>Bob</Name>  <Gender>Male</Gender>  </Person>  <Person>  <Name>Chris</Name>  <Gender>Female</Gender>  </Person>  <Person>  <Name>Dennis</Name>  <Gender>Male</Gender>  </Person>  </ArrayOfPerson>    表 GetPersonTable()的返回的String类型的值  <PersonTable> <Person>  <Name>Alice</Name>  <Gender>Female</Gender>  </Person> <Person>  <Name>Bob</Name>  <Gender>Male</Gender>  </Person> <Person>  <Name>Chris</Name>  <Gender>Female</Gender>  </Person> <Person>  <Name>Dennis</Name>  <Gender>Male</Gender>  </Person> <Person>  <Name>Eric</Name>  <Gender>Male</Gender>  </Person> </PersonTable>    到这里 XML Web Service的创建就已经完成了 NET中创建的XML Web Services遵循的是统一的行业标准(SOAP XML等) 因此无论使用 NET语言还是使用非 NET语言 都可以调用它 尤其对于GetPersonTable()返回的结果来说 只要用XML Parser作简单的处理 就能把数据提取出来 下面就将演示如何在Java中完成这一处理      在Java中调用 NET Web Services 处理返回的数据集合    编写客户端调用Web Services时 最快速简便做法的是利用工具根据Web Services的WSDL描述生成客户端代理类(Proxy) 而不是直接对SOAP Toolkit进行编程 在 NET Framework中 这个工作可以由wsdl exe完成 在Java中 可以在JBuilder或者VisualAge Java等Java IDE中安装一个叫做WASP Developer的免费插件 这个插件也能完成由WSDL描述生成Proxy类的工作 另外 该公司还提供了WASP Server for Java和WASP UDDI 降低了用户用Java开发Web Services以及建立UDDI服务的难度     在本文的例子中 用了JBuilder +WASP Developer来调用前文中建立的 NET XML Web Services 在调用之前 首先是用WASP Developer生成Proxy类 从图表 中可以看到 生成Proxy的工具已经在Java中也创建了一个Person类     表 用WASP Developer生成的Proxy类   >  表 WASP Developer创建的Person类    package javaclient service Soap Clientstruct;    public class Person   public java lang String Name;  public java lang String Gender;      /*  * Generated by WSDLCompiler (c) Systinet Corp   *   */    表 在Java中调用GetPersons()的代码  在Proxy类的基础上 就可以访问 NET编写的Web Services并提取数据了 对于GetPersons()来说 由于已经生成了Person类 所以调用代码非常简单直接   import idoox webservice client WebServiceLookup;  import idoox wasp Context;  import javax swing *;  import javax swing table *;    try  System setProperty( wasp location C:\\\\Home\\\\Util\\\\wasp_ SP );    javaclient service Soap Client Service Soap service;  String serviceURI = ;  String wsdlURI = ;    WebServiceLookup lookup = (WebServiceLookup) Context getInstance(Context WEBSERVICE_LOOKUP);  service = (javaclient service Soap Client Service Soap) lookup lookup(  wsdlURI   javaclient service Soap Client Service Soap class   serviceURI);    Person[] persons=  service GetPersons(new javaclient service Soap Clientstruct GetPersons()) GetPersonsResult;  DefaultTableModel model=new DefaultTableModel(new String[] name gender );  for(int i= ;i<persons length;i++)  model addRow(new String[]persons[i] Name toString() persons[i] Gender toString());    this jTable setModel(model);    catch(Exception ex)    javax swing JOptionPane showMessageDialog(this ex getMessage());      调用GetPersonTable()并解析XML字符串要相对复杂一些 需要用到XML Parser从图表 中的XML字符串中提取数据 并逐一显示在JTable中 下面是从访问Web Method到解析XML 最后提取数据并显示的完整代码 及其运行结果截图   import javax swing *;  import javax swing table *;    import idoox webservice client WebServiceLookup;  import idoox wasp Context;    import w c dom *;  import apache xml serialize *;  import apache xerces dom *;    try  System setProperty( wasp location C:\\\\Home\\\\Util\\\\wasp_ SP );    javaclient service Soap Client Service Soap service;  String serviceURI = ;  String wsdlURI = ;    WebServiceLookup lookup = (WebServiceLookup) Context getInstance(Context WEBSERVICE_LOOKUP);  service = (javaclient service Soap Client Service Soap) lookup lookup(  wsdlURI   javaclient service Soap Client Service Soap class   serviceURI);    String result=  service GetPersonTable(new javaclient service Soap Clientstruct GetPersonTable()) GetPersonTableResult;  DefaultTableModel model=new DefaultTableModel(new String[] name gender );    java io StringReader reader=new java io StringReader(result);   apache xerces parsers DOMParser parser=new apache xerces parsers DOMParser();  parser parse(new xml sax InputSource(reader));   w c dom Document document=parser getDocument();   w c dom NodeList children=document getDocumentElement() getChildNodes();    for(int i= ;i<children getLength();i++)   w c dom Node node=em(i);  if(node getNodeName() equals( Person ))   w c dom NodeList personAttrNodes=node getChildNodes();  String name= N/A ;  String gender= N/A ;    for(int j= ;j<personAttrNodes getLength();j++)   w c dom Node attrNode=em(j);  String attrNodeName=attrNode getNodeName();  if(attrNodeName equals( Name ))  name=attrNode getFirstChild() getNodeValue();  else if(attrNodeName equals( Gender ))  gender=attrNode getFirstChild() getNodeValue();  else  continue;      model addRow(new String[]name gender);      this jTable setModel(model);    catch(Exception ex)    javax swing JOptionPane showMessageDialog(this ex getMessage());     >   小结    从前面的叙述和代码中可以看出 对于 如何在Java/Delphi中使用 NET的Web Service返回的DataSet 的问题 虽然在非 NET语言环境中直接接受DataSet类型的返回值比较困难 但可以有其他的解决方案     对于第一种解决方案 也就是采用自定义数据类型 它的优点是客户端代码非常简单 容易编写 而且容易理解 它的缺点是服务器端需要定义新的类 而且当通过ADO NET从数据库中提取数据以后 还要再手工编写代码 将DataSet中的数据遍历一遍 转存成自定义类型的对象     对于第二种解决方案 就是用DataSet WriteXML()的方案 它的优点和缺点正好和第一种方案是互补的 它在客户端需要编写较多的代码 尤其是需要用XML Parser编程 提高了编程的难度 另一方面 它在服务器端比较简单 如果开发者在原先的纯 NET环境(即客户端也是 NET)中已经开发了返回类型为DataSet的Web Services 那么当开发者希望在客户端引入非 NET语言时 服务器端只需要简单的再增加一个Web Method 通过简单的WriteXML()调用对 cha138/Article/program/net/201311/13112

相关参考

知识大全 使用VB或VC#访问XML Web services

使用VB或VC#访问XMLWebservices  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 vs.net中web services入门

  Visual中的XMLWebservices入门  目录  简介用托管代码编写的XMLWebservices使用VisualStudio创建XMLWebservices使用VisualStudio

知识大全 用Web Services来整合.NET和J2EE

用WebServices来整合.NET和J2EE  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP.NET创建Web服务之XML基础结构

ASP.NET创建Web服务之XML基础结构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  为了

知识大全 ASP.NET构造XML Web服务

ASP.NET构造XMLWeb服务  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使用ASPNE

知识大全 .NET Framework中使用XML Web Service

.NETFramework中使用XMLWebService  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 ASP.NET创建XML Web服务全接触

ASP.NET创建XMLWeb服务全接触  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  XMLW

知识大全 ASP.NET预编译Web应用程序规避调用延迟

ASP.NET预编译Web应用程序规避调用延迟  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  A

知识大全 ASP.NET入门教程 12.2.1调用Web服务

ASP.NET入门教程12.2.1调用Web服务  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n

知识大全 使用eclipse调用.net web service

  以前我用的开发框架都是net现在换成javaEE框架和linux平台还需要一段时间的学习有时在测试工作中需要实现一些功能但是又不会用java实现怎么办呢?这里有一个方法使用net的框架开发webs