`
jingyukxy
  • 浏览: 3961 次
  • 性别: Icon_minigender_1
  • 来自: 济南
最近访客 更多访客>>
社区版块
存档分类
最新评论

WebService处理.net中Dataset问题解决办法

    博客分类:
  • j2ee
阅读更多
  在此我用的是Asix框架来解决的,在Asix包下有一个叫作WSDL2Java的类,可用来解析WSDL以生成Java代码供程序员使用,我尝试过用soap来处理Dataset,不过没有成功(浪费了不少时间)。
  首先下载Asix包,直接到Apache下就可以了,下载完成后将解压的webroot/lib下的包全部拷到JDK的lib目录下。然后由控制台进入Jdk目录,运行:
Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx?wsdl
红色部分是你要的文件调用的webservice程序的地址,就是上面说到的那个wsdl文件,当然前提你必须配置好了Java的环境变量,接下来你会看到在Jdk目录下生成出来了一个cn(适个人设置而定)文件夹,这里面就是Asix为我们生成的Java代码。
  然后将文件夹拷入你的项目的src目录下即可。生成出来的代码中我主要使用的是TrainTimeWebServiceLocator,TrainTimeWebServiceSoap,GetDetailInfoByTrainCodeResponseGetDetailInfoByTrainCodeResult这几个类,
  首先将信息封装到一个Pojo类里,
public class Train {
	private String trainStation; 
	private String arriveTime; 
	private String startTime; 
	private String km;
	public String getArriveTime() {
		return arriveTime;
	}
	public void setArriveTime(String arriveTime) {
		this.arriveTime = arriveTime;
	}
	public String getKm() {
		return km;
	}
	public void setKm(String km) {
		this.km = km;
	}
	public String getStartTime() {
		return startTime;
	}
	public void setStartTime(String startTime) {
		this.startTime = startTime;
	}
	public String getTrainStation() {
		return trainStation;
	}
	public void setTrainStation(String trainStation) {
		this.trainStation = trainStation;
	} 

}

 然后处理信息,
public class TrainInfo {
	public ArrayList getInfo(String traincode) {
		ArrayList trainList = null;
		try {
			TrainTimeWebServiceLocator service = new TrainTimeWebServiceLocator();
			TrainTimeWebServiceSoap client = service.getTrainTimeWebServiceSoap();
			GetDetailInfoByTrainCodeResponseGetDetailInfoByTrainCodeResult traininfo =  client.getDetailInfoByTrainCode(traincode, "");
			MessageElement[] traElt = traininfo.get_any();
			List trainElementHead = traElt[0].getChildren();//消息头,DataSet对象    
	        List trainElementBody = traElt[1].getChildren();//消息体信息,DataSet对象  
	        if (trainElementBody.size() <= 0){    
	            //无返回记录,则无输出    
	            return null;
	        }    
            String nn = trainElementBody.get(0).toString();//消息体的字符串形式    
            saveXMLString(nn,"train.xml");
            trainList = loadXML("train.xml");
            /*for(Iterator iter=trainList.iterator(); iter.hasNext();) {
            	Train train = (Train)iter.next();
            	System.out.println(train.getArriveTime());
            }*/
	            
		} catch(Exception e) {
			e.printStackTrace();
		}
		return trainList;
	}
	
	public static void saveXMLString(String XMLString, String fileName) throws IOException {    
		File file = new File(fileName);    
		if (file.exists()) {    
		    file.delete();    
		}    
		file.createNewFile();    
		if (file.canWrite()) {    
		    FileWriter fileOut = new FileWriter(file);    
		    fileOut.write(XMLString);    
		    fileOut.close();    
		}    
	}
	
	 public static ArrayList loadXML(String path) throws Exception {
		 //Train train = null;
		 ArrayList<Train> trainList = null;
		 FileInputStream fi = null;
		 try {
			 fi = new FileInputStream(path);
			 trainList = new ArrayList<Train>();
			 SAXBuilder sb = new SAXBuilder();    
			 Document doc = sb.build(fi);    
			 Element root = doc.getRootElement(); // 得到根元素    
			 List focs = root.getChildren();
			 Element foc = null;
			 Train train = null;
			 
			 for(int i=0; i<focs.size(); i++) {
				 train = new Train();
				 foc = (Element) focs.get(i);
				 train.setArriveTime(foc.getChild("ArriveTime").getText());
				 train.setKm(foc.getChild("KM").getText());
				 train.setStartTime(foc.getChild("StartTime").getText());
				 train.setTrainStation(foc.getChild("TrainStation").getText());
				 
				 trainList.add(train);
			 }
		 } catch (Exception e) {
			 e.printStackTrace();
		 }
		 return trainList;
	 }
	 public static void main(String[] args) {
		 new TrainInfo().getInfo("1132");
	 }
}

到此可将Dataset读取完成,本人测试正常,如有不妥之处,请留言。
分享到:
评论

相关推荐

    java读取.net WebService中的Dataset

    在此我用的是Asix框架来解决的,在Asix包下有一个叫作WSDL2Java的类,可用来解析WSDL以生成Java代码供程序员使用,我尝试过用soap来处理Dataset,不过没有成功(浪费了不少时间)

    浪曦][原创]WebService在.NET中的实战应用四

    **DataSetSurrogate.dll**:这是一个动态链接库(DLL),可能包含了一种数据集的序列化代理,用于高效地序列化和反序列化.NET的DataSet对象,这对于传递大数据量或者复杂结构的数据非常有用,特别是在WebService中。...

    Delphi调用C#的Webservice返回Dataset

    DataSet是.NET框架中一个强大的数据处理对象,它可以存储和操作离线数据,类似一个内存中的数据库。C#的Web服务可以返回DataSet对象,其中包含从数据库查询的结果。 4. **Delphi客户端调用Web服务**: Delphi提供...

    WebService在.NET中的实战应用二提高WebService性能(源码PPT等资源)

    【WebService在.NET中的实战应用二:提高WebService性能】 WebService是一种基于XML标准的互联网通信协议,它允许不同系统之间进行数据交换。在.NET框架中,WebService是通过ASP.NET技术实现的,能够提供跨平台、跨...

    浪曦][原创]WebService在.NET中的实战应用二

    【标题】:“浪曦][原创]WebService在.NET中的实战应用二” 【描述】:“WebService在.NET中的实战应用,通过实例来增强编程能力” 基于提供的标题和描述,我们可以深入探讨WebService在.NET框架下的实际运用和...

    java调用.net写的返回值为dataset的webservice(2)实例项目

    包内容太大,无法用一个压缩文件上传。放在另一个。 网上的调用例子太多了,有的要用cmd来解析webserive,有的没有包,有的代码报错。...GetWebService2 类实现原理:从webservice取值后保存为xml,然后读取,

    java处理.net webservice返回的对象

    本文将详细介绍如何使用Apache Axis库来实现这一功能,以及处理.NET WebService返回的对象,特别是Dataset类型。 首先,为了在Java中调用.NET WebService,我们需要以下依赖库: 1. axis.jar - Apache Axis的核心...

    asp.net 利用webservice,dataset创建火车票查询系统

    在本项目中,我们将探讨如何使用ASP.NET技术,结合Web服务(WebService)和DataSet来创建一个火车票查询系统。这是一个常见的Web应用程序开发实践,旨在提供用户友好的界面,查询全国范围内的火车票信息。 首先,...

    WebService在·NET中的实战应用四

    在.NET中,可以使用BeginInvoke和EndInvoke方法实现WebService调用的异步处理,以避免阻塞UI线程,提升用户体验。异步调用特别适用于那些耗时较长的操作,如大数据量的处理或远程服务的调用。 Sql.sql文件可能包含...

    .NET_Webservice数据压缩

    在示例中,可能需要将解压缩的字节数组反序列化回DataSet对象,以便进一步处理。 虽然.NET自带的GZipStream在一定程度上提高了性能,但相对于某些第三方压缩库,它的压缩比例可能不是最优的。如果需要更高的压缩...

    .net WebService 大数据量时性能的提高

    标题中的".NET WebService 大数据量时性能的提高"主要关注的是在处理大量数据时,如何优化.NET WebService的性能。在Web服务开发中,尤其是处理大数据集时,性能优化是一个关键点,因为大量的数据传输可能导致网络...

    ASP.NET学习大全 (javascript ADO.NET MVC 常用函數 操作EXCEL WebService)

    这个"ASP.NET学习大全"涵盖了多个关键领域的知识,包括JavaScript、ADO.NET、MVC架构以及如何操作Excel和WebService,这些都是现代Web开发中的核心组件。 1. JavaScript:这是一种广泛使用的客户端脚本语言,用于为...

    WebService在·NET中的实战应用二

    而"DataSetWebService"可能是一个示例,演示了如何在WebService中使用DataSet,DataSet是一个强大的数据容器,但要注意其内存占用和性能影响,尤其是在大数据量操作时。 在实际开发中,理解并熟练运用这些知识点,...

    Silverlight边学边写之一“Silverlight+Webservice+Dataset”综合应用

    5. **数据绑定到UI**:展示如何将Dataset中的数据绑定到Silverlight控件,如DataGrid或ListBox,实现数据的动态展示。 6. **异步通信**:由于Silverlight与Webservice的通信通常采用异步模式,会讲解如何处理异步...

    在ASP.net中使用XML和Web服务

    在ASP.NET中,XML(Extensible Markup Language)和Web服务是两个重要的技术,它们共同促进了应用程序之间的数据交换和互操作性。这篇详细讲解将深入探讨如何在ASP.NET环境中利用XML和Web服务进行开发。 首先,XML...

    WebService压缩方法整合

    4. **DataSetSurrogate**:在.NET环境中,DataSet是常用的数据容器,但它的序列化过程可能会导致大量内存和带宽的消耗。DataSetSurrogate是一种优化技术,通过自定义的类来代替DataSet进行序列化和反序列化,从而...

    asp.net与webservice实例剖析

    ASP.NET与Web Service是微软.NET Framework中的两个重要技术,用于构建高效、可扩展的Web应用程序和服务。在本文中,我们将深入剖析这两个技术,并通过实例来阐述它们的特点和优势。 首先,ASP.NET是.NET Framework...

    ASP.NET面试必问的问题(内附答案),最必须的C#面试资料

    ASP.NET 面试必问的问题(内附答案),最必须的 C# 面试资料 本资源涵盖了 ASP.NET 所有方面的知识点,是职业必备的知识点。以下是从资源中生成的知识点: ADO.NET 和 ADO 的区别 ADO 使用 Recordset 存储,而 ...

Global site tag (gtag.js) - Google Analytics