java解析dataset(java解析xml文件)

本篇文章给大家谈谈java解析dataset,以及java解析xml文件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、通过webservice调用一个网站的公共接口,他返回的数据是.net的dataset,用java怎么解析使用dataset呢?2、JAVA处理含有DataSet的web services3、java如何解析xml格式的字符串4、怎么解析webservice返回的dataset数据5、C# webservice返回DataSet类型,android怎么调用解析?

通过webservice调用一个网站的公共接口,他返回的数据是.net的dataset,用java怎么解析使用dataset呢?

返回一个ArrayArray 。。。。。如果兼容问题,可以是按HTTP POST方式调用

JAVA处理含有DataSet的web services

本篇文章将讲述如何通过axis取发布的Web services 并处理返回含有DataSet的处理结果 展现在页面上

涉及到的知识有

AXIS

SAXBuilder

xml

步骤如下

) 生成client stub文件

必备条件axis开源包 JDK

A) 比如AXIS包放在你的C盘 则需要在环境变量当中设定的东东有

AXIS_HOME=C:\AXIS

AXIS_CLASSPATH= ;%AXIS_HOME%\lib\axis jar;%AXIS_HOME%\lib\axis ant jar;%AXIS_HOME%\lib\mons discovery jar;%AXIS_HOME%\lib\mons logging jar;%AXIS_HOME%\lib\jaxrpc jar;%AXIS_HOME%\lib\saaj jar;%AXIS_HOME%\lib\wsdl j jar;%AXIS_HOME%\lib\log j jar;%AXIS_HOME%\lib\activation jar;%AXIS_HOME%\lib\mail jar

然后加入到PATH当中 ;% AXIS_CLASSPATH%   (加入就可以了)

注意 很多人因为以上的配置不对 导致对AXIS学习的信心下降 其实 仔细一点就会发现在CLASSPATH当中找一找有没有版本区别 也就是每一个JAR包是不是真的存在就可以了 (哈哈 我曾为之付出了两天的时间娞!)

B) 进入DOS模式 转到D盘 执行如下代码

java apache axis wsdl WSDL Java p 名称 最好是包名 看到了吧 发布为a *** x的文件后面加入?wsdl就可以解决了

然后就会在这个名称 最好是包名下就会有一堆的JAVA文件 一般的话会有

xxxx java

xxxxLocator java

xxxxSoap java

xxxxSoapStub java

其次还有以下划线_xxxx???? java的文件都是序列化的对象 也就是返回的结果对应元素 可以暂时不理它 下面就以作者生成的示例做一个引用webservice的操作 作者得到的文件如下:

SearchFlightInfo java

SearchFlightInfoLocator java

SearchFlightInfoSoap java

SearchFlightInfoSoapStub java

_GetFlightInfoResponse_GetFlightInfoResult java

_GetstrFlightInfo java

_GetstrFlightInfoResponse java

C) 引用方法

基本思想是从得到web services后取得他的主体信息(返回的数据信息) 然后生成XML文件 然后再把XML文件转换成一个JAVA序列化对象就可以了

如下是序列化对象的代码

java 代码

try {

/**

* 取得前台的参数 航班日期 航班号

*/

String planDate = request getParameter( day );

String flyNo = request getParameter( hanbanno );

/**

* 按照最新版本制作 最新位置在

*/

SearchFlightInfo service = new SearchFlightInfoLocator();

SearchFlightInfoSoap client = service getSearchFlightInfoSoap();

_GetFlightInfoResponse_GetFlightInfoResult FOCInfo=client getFlightInfo(planDate flyNo);

String ErrorInfo = client getstrFlightInfo(planDate flyNo);//错误警告信息

MessageElement[] FOCElement = FOCInfo get_any();//取得xml信息

List FOCElementHead = FOCElement[ ] getChildren();//消息头 DataSet对象

List FOCElementBody = FOCElement[ ] getChildren();//消息体信息 DataSet对象

if (FOCElementBody size() = ){

//无返回记录 则无输出

return mapping findForward( NoRecord );

}

String nn = FOCElementBody get( ) toString();//消息体的字符串形式

String path = request getRealPath( );

CommonTools saveXMLString(nn path+ \\FOC\\heweiya xml );//保存为XML形式 其中FOC目录做为固定目录

/**

* 使用DOM J来解析这个序列化的对象

*/

//String path = request getRealPath( );

Vector OutFoc = CommonTools LoadXML(path + \\FOC\\heweiya xml );

request setAttribute( OutFoc OutFoc);

if (request getParameter( as ) != null) {

return mapping findForward( Foc );

}

return mapping findForward( Foc );

} catch (Exception e) {

/**

* 服务有异常 或者服务没有启动!

*/

request setAttribute( UserMsg Public FocError );

return mapping findForward( Fail );

}

如下是解析XML文件变换成一个序列化的对象的JAVA代码 (其中Vecto就相关于安全的LIST了)

/**

* 读取XML文件所有信息

*/

public static Vector LoadXML(String path) throws Exception {

Vector xmlVector = null;

FileInputStream fi = null;

try {

fi = new FileInputStream(path);

xmlVector = new Vector();

SAXBuilder *** = new SAXBuilder();

Document doc = *** build(fi);

Element root = doc getRootElement(); // 得到根元素

List focs = root getChildren(); // 得到根元素所有子元素的集合

Element foc = null;

FocBean xml = null;

/**

* 从 开始 因为 为错误警告信息

*/

for (int i = ; i focs size(); i++) {

xml = new FocBean();

foc = (Element) focs get(i); // 得到第一本书元素

/*               xml setAta(foc getChild( ATA ) getText());

xml setAtd(foc getChild( ATD ) getText());

xml setEta(foc getChild( ETA ) getText());

xml setEtd(foc getChild( ETD ) getText());

xml setFltid(foc getChild( FLTID ) getText());

xml setSta(foc getChild( STA ) getText());

xml setStd(foc getChild( STD ) getText());

xml setTdwn(foc getChild( TDWN ) getText());

xml setToff(foc getChild( TOFF ) getText());*/

/**

* 如下是最新版本的取得实体对象的方法

* modify by heweiya

*/

xml setAta(foc getChild( ATA ) getText());

xml setAtd(foc getChild( ATD ) getText());

xml setEta(foc getChild( ETA ) getText());

xml setEtd(foc getChild( ETD ) getText());

xml setFltid(foc getChild( FLTID ) getText());

xml setSta(foc getChild( STA ) getText());

xml setStd(foc getChild( STD ) getText());

xml setTdwn(foc getChild( TDWN ) getText());

xml setToff(foc getChild( TOFF ) getText());

xml setAcown(foc getChild( ACOWN ) getText());

xml setActyp(foc getChild( ACTYP ) getText());

xml setArrstn(foc getChild( ARRSTN ) getText());

xml setDatop(foc getChild( DATOP ) getText());

xml setDepstn(foc getChild( DEPSTN ) getText());

xml setPlnid(foc getChild( Plnid ) getText());

xmlVector add(xml);

}

} catch (Exception e) {

System err println(e + error );

} finally {

try {

fi close();

} catch (Exception e) {

e printStackTrace();

}

}

return xmlVector;

}

还有一个代码如下

java 代码

// 把String 保存为文件

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();

}

lishixinzhi/Article/program/Java/hx/201311/26845

java如何解析xml格式的字符串

使用dom4j,在百度下搜一个dom4j包,然后在网上找个例子看dom4j操作xml的使用方法,很简单的。

java解析dataset(java解析xml文件)

怎么解析webservice返回的dataset数据

XML是一种数据格式,每一种类型的数据格式要求一个解析器来解析出的量使用,XML是无例外的信息。您可以使用SAX或DOM解析器来构建这当然,首先所有的数据,你需要首先确定该文件在什么位置。

验证用于验证符合文件格式的规定,这条规则可以是公开的,也可以是私有的。对于XML,公众完整性XML自身的最基本规则,另一种是某些协议,如SVG,WML

XMPP,等等;也就是说,你可以写自己专有的XML

Schema来指定一些你需要XML文档格式。

C# webservice返回DataSet类型,android怎么调用解析?

您好,这样的:

package test.webservice;

import org.ksoap2.SoapEnvelope;

import org.ksoap2.serialization.SoapObject;

import org.ksoap2.serialization.SoapSerializationEnvelope;

import org.ksoap2.transport.HttpTransportSE;

import test.webservice.R;

import android.os.Bundle;

import android.os.Handler;

import android.os.StrictMode;

import android.os.AsyncTask;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.content.Intent;

import android.view.KeyEvent;

import android.view.LayoutInflater;

import android.view.View;

import android.widget.AdapterView;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

import android.widget.ListView;

import android.os.PatternMatcher;

import java.util.Iterator;

import java.util.Set;

import java.util.List;

import android.app.ListActivity;

import android.graphics.Color;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Map;

import java.util.regex.Pattern;

import java.util.regex.Matcher;

import android.widget.SimpleAdapter;

import android.widget.AdapterView.OnItemClickListener;

import android.net.NetworkInfo;

import android.os.Build.VERSION;

public class kehu extends Activity{

EditText editText1;

TextView textView1;

Button button1;

ListView lv;

ArrayListMapString, Object list = new ArrayListMapString,Object();

public static String flags =””;

private SimpleAdapter listAdapter;

public static String phoneNum =””;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.kehu);

editText1 = (EditText) findViewById(R.id.editText1);

textView1 = (TextView) findViewById(R.id.textView1);

button1 = (Button) findViewById(R.id.button1);

lv=(ListView)findViewById(R.id.ListView_detail);

textView1.setText(“请输入客户姓名!”);

button1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

phoneNum = editText1.getText().toString().trim();

getRemoteInfo(phoneNum);

}

public void getRemoteInfo(String phoneSec) {

// 命名空间

String nameSpace = “”;

// 调用的方法名称

String methodName = “GetListfhkh”;

// EndPoint

String endPoint = “”;

// SOAP Action

String soapAction = “”;

// 指定WebService的命名空间和调用的方法名

SoapObject rpc = new SoapObject(nameSpace, methodName);

// 设置需调用WebService接口需要传入的两个参数mobileCode、userId

rpc.addProperty(“khlxr”,phoneSec);

// 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.bodyOut = rpc;

// 设置是否调用的是.Net开发的WebService

envelope.dotNet = true;////指定webservice的类型的(java,PHP,dotNet)

// 等价于envelope.bodyOut = rpc;

envelope.setOutputSoapObject(rpc);

HttpTransportSE transport = new HttpTransportSE(endPoint);

try {

// 调用WebService

transport.call(soapAction, envelope);

} catch (Exception e) {

e.printStackTrace();

}

// 获取返回的数据

SoapObject object = (SoapObject) envelope.bodyIn;//在这里出现错误,因为webservice端返回的是一个dataset

// 获取返回的结果,这里添加数据,返回的是整数类型,也能被解析出来,就是dataset不能被正常解析,在删除操作的时候,返回的是布尔类型true,也能正确解析

//,这个就是返回dataset数据,如果能解决这个就能解决上面的问题

// 使用Map来表示列表数据

MapString, Object mapOne = new HashMapString, Object();

flags= object.getProperty(0).toString();

Pattern pattern=Pattern.compile(“ds=anyType\\{[^}]*\\};”);

Matcher m = pattern.matcher(flags);//import java.util.regex.Matcher;

while (m.find())

{

String tmp=m.group().replace(“ds=anyType{“,””);

String[] Strlen=tmp.split(“;”);

if(Strlen.length1)

{

mapOne = new HashMapString, Object(); //只要新建1个new map,就能预防值被覆盖的情况

String khbh=Strlen[0].split(“=”)[1];

String khqc=Strlen[1].split(“=”)[1];

mapOne.put(“user_name”,khbh);

mapOne.put(“user_pasword”,khqc);//map的键是不允许重复的,否则之前的值会被覆盖掉

list.add(mapOne);

}

}

String title=”查询结果如下:”;

textView1.setText(title);

listAdapter = new SimpleAdapter(this, list, R.layout.user, new String[] { “user_name”, “user_pasword” },new int[] { R.id.user_name, R.id.user_pasword });

// 设置显示ListView

lv.setAdapter(listAdapter);

}

}

以上代码在android真机2.2上测试通过,但是在4.0中无法测试通过(主线程不能访问网络),有没有哪位高手能帮忙修改,使其能在4.0版本以上也能正常访问网络。

关于java解析dataset和java解析xml文件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月29日 11:48:40
下一篇 2024年3月29日 11:57:02

相关推荐

  • 深入java虚拟机pdf,深入java虚拟机 中村成洋 pdf

    在linux环境下,java怎么实现从word格式转换为pdf格式 //设置当前使用的打印机,我的Adobe Distiller打印机名字为 Adobe PDF wordCom.setProperty( ActivePrinter , new Variant( Adobe PDF ));//设置printout的参数,将word文档打印为postscript…

    2024年5月23日
    4400
  • java截取指定长度字符串,java截取指定字符串之后的

    java中如何截取字符串中的指定一部分 第一个参数是开始截取的字符位置。(从0开始)第二个参数是结束字符的位置+1。(从0开始)indexof函数的作用是查找该字符串中的某个字的位置,并且返回。 int end);截取s中从begin开始至end结束时的字符串,并将其赋值给s;split讲解:java.lang.string.split split 方法 将…

    2024年5月23日
    4200
  • java绑定一个端口,java使用端口

    java如何多个service共用一个端口 你如果有多个项目的话,你可以把多个项目放到一个tomcat里面,这样端口相同使用项目名称来进行区分项目。你如果非要使用同一个,你也可以配置不同的域名导向不同的项目。就是访问的域名不同转接到的项目不同。 如果需要同时启动多个程序,要么修改tomcat的配置文件中的监听端口。要么修改jar包程序的监听端口。不能在一台服…

    2024年5月23日
    3400
  • linux给文件写权限,linux怎么给文件权限

    linux宝塔写入权限不足 1、可以使用chmod命令修改权限。语法:chmod [-cfvR] [–help] [–version] mode file…说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。 2、通过更改文件权限可以使用c…

    2024年5月23日
    5000
  • java多线程并发编程基础,Java多线程并发执行返回

    电脑培训分享Java并发编程:核心理论 电脑培训发现本系列会从线程间协调的方式(wait、notify、notifyAll)、Synchronized及Volatile的本质入手,详细解释JDK为我们提供的每种并发工具和底层实现机制。 人们开始意识到了继承的众多缺点,开始努力用聚合代替继承。软件工程解决扩展性的重要原则就是抽象描述,直接使用的工具就是接口。接…

    2024年5月23日
    4600
  • 自学java找工作,自学java找工作需要包装简历吗

    自学java学多久可以找到工作 1、自学Java至少需要一年以上的时间才能达到找工作的水平。报班培训四到六个月的时间就可以找到一份不错的工作。 2、自学Java至少需要一年以上的时间才能达到找工作的水平。 3、如果要想找到一份Java相关的工作,需要至少学习5-6个月时间才能就业。Java开发需要掌握一些基础的编程语言知识,比如掌握面向对象的编程思想、基本的…

    2024年5月23日
    4300
  • 包含c语言对txt文件命名的词条

    如何在C语言编程里面修改源文件名字 如果你是在WINDOWS的话,简单了,随便用个编辑器,比如记事本,然后写c源程序,保存到你想要保存的位置。如果你在DOS下,可以用edit,写好以后,按alt键,选择文件菜单,然后保存。 用open打开文件,注意操作模式使用“修改”或者“添加” 用write或者fprintf向文件中写入你的内容。 用close关闭文件。 …

    2024年5月23日
    4800
  • java左移右移,java 左移

    java位移问题 1、思路:直接用Integer类的bit运算操作。 2、移位操作:左移:向左移位,符号后面的数字是移了多少位,移的位用0补齐,例如2进制数01111111左移一位后变为11111110,移位是字节操作。 3、Java 位运算 Java 位运算[转]一,Java 位运算表示方法: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的…

    2024年5月23日
    4200
  • java技术规范,java规范性要求

    现在主流的JAVA技术是什么? java最流行开发技术程序员必看 1 、Git Git一直是世界上最受欢迎的Java工具之一,也是Java开发人员最杰出的工具之一。Git是一个开源工具,是-种出色的分布式版本控制解决方案。 (1).Java基础语法、数组、类与对象、继承与多态、异常、范型、集合、流与文件、反射、枚举、自动装箱和注解。(2).Java面向对象编…

    2024年5月23日
    4000
  • c语言多文件调用,c语言多文件操作

    c语言一个结构体如何在多个源文件里面调用? 在这种方法中,可以先将多个源文件分别编译成目标文件,然后再将它们链接成一个可执行文件。 在头文件里定义结构,例如:typedef struct { int a, b;} S;S s_instance;在其他文件里引用就可以。 创建程序入口点main函数,在main函数中条用其它函数。达到同时运行的母的。如果不这样,…

    2024年5月23日
    4100

发表回复

登录后才能评论



关注微信