在此我用的是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读取完成,本人测试正常,如有不妥之处,请留言。
分享到:
相关推荐
在此我用的是Asix框架来解决的,在Asix包下有一个叫作WSDL2Java的类,可用来解析WSDL以生成Java代码供程序员使用,我尝试过用soap来处理Dataset,不过没有成功(浪费了不少时间)
**DataSetSurrogate.dll**:这是一个动态链接库(DLL),可能包含了一种数据集的序列化代理,用于高效地序列化和反序列化.NET的DataSet对象,这对于传递大数据量或者复杂结构的数据非常有用,特别是在WebService中。...
DataSet是.NET框架中一个强大的数据处理对象,它可以存储和操作离线数据,类似一个内存中的数据库。C#的Web服务可以返回DataSet对象,其中包含从数据库查询的结果。 4. **Delphi客户端调用Web服务**: Delphi提供...
【WebService在.NET中的实战应用二:提高WebService性能】 WebService是一种基于XML标准的互联网通信协议,它允许不同系统之间进行数据交换。在.NET框架中,WebService是通过ASP.NET技术实现的,能够提供跨平台、跨...
【标题】:“浪曦][原创]WebService在.NET中的实战应用二” 【描述】:“WebService在.NET中的实战应用,通过实例来增强编程能力” 基于提供的标题和描述,我们可以深入探讨WebService在.NET框架下的实际运用和...
包内容太大,无法用一个压缩文件上传。放在另一个。 网上的调用例子太多了,有的要用cmd来解析webserive,有的没有包,有的代码报错。...GetWebService2 类实现原理:从webservice取值后保存为xml,然后读取,
本文将详细介绍如何使用Apache Axis库来实现这一功能,以及处理.NET WebService返回的对象,特别是Dataset类型。 首先,为了在Java中调用.NET WebService,我们需要以下依赖库: 1. axis.jar - Apache Axis的核心...
在本项目中,我们将探讨如何使用ASP.NET技术,结合Web服务(WebService)和DataSet来创建一个火车票查询系统。这是一个常见的Web应用程序开发实践,旨在提供用户友好的界面,查询全国范围内的火车票信息。 首先,...
在.NET中,可以使用BeginInvoke和EndInvoke方法实现WebService调用的异步处理,以避免阻塞UI线程,提升用户体验。异步调用特别适用于那些耗时较长的操作,如大数据量的处理或远程服务的调用。 Sql.sql文件可能包含...
在示例中,可能需要将解压缩的字节数组反序列化回DataSet对象,以便进一步处理。 虽然.NET自带的GZipStream在一定程度上提高了性能,但相对于某些第三方压缩库,它的压缩比例可能不是最优的。如果需要更高的压缩...
标题中的".NET WebService 大数据量时性能的提高"主要关注的是在处理大量数据时,如何优化.NET WebService的性能。在Web服务开发中,尤其是处理大数据集时,性能优化是一个关键点,因为大量的数据传输可能导致网络...
这个"ASP.NET学习大全"涵盖了多个关键领域的知识,包括JavaScript、ADO.NET、MVC架构以及如何操作Excel和WebService,这些都是现代Web开发中的核心组件。 1. JavaScript:这是一种广泛使用的客户端脚本语言,用于为...
而"DataSetWebService"可能是一个示例,演示了如何在WebService中使用DataSet,DataSet是一个强大的数据容器,但要注意其内存占用和性能影响,尤其是在大数据量操作时。 在实际开发中,理解并熟练运用这些知识点,...
5. **数据绑定到UI**:展示如何将Dataset中的数据绑定到Silverlight控件,如DataGrid或ListBox,实现数据的动态展示。 6. **异步通信**:由于Silverlight与Webservice的通信通常采用异步模式,会讲解如何处理异步...
在ASP.NET中,XML(Extensible Markup Language)和Web服务是两个重要的技术,它们共同促进了应用程序之间的数据交换和互操作性。这篇详细讲解将深入探讨如何在ASP.NET环境中利用XML和Web服务进行开发。 首先,XML...
4. **DataSetSurrogate**:在.NET环境中,DataSet是常用的数据容器,但它的序列化过程可能会导致大量内存和带宽的消耗。DataSetSurrogate是一种优化技术,通过自定义的类来代替DataSet进行序列化和反序列化,从而...
ASP.NET与Web Service是微软.NET Framework中的两个重要技术,用于构建高效、可扩展的Web应用程序和服务。在本文中,我们将深入剖析这两个技术,并通过实例来阐述它们的特点和优势。 首先,ASP.NET是.NET Framework...
ASP.NET 面试必问的问题(内附答案),最必须的 C# 面试资料 本资源涵盖了 ASP.NET 所有方面的知识点,是职业必备的知识点。以下是从资源中生成的知识点: ADO.NET 和 ADO 的区别 ADO 使用 Recordset 存储,而 ...