webservice数据解析,webservice详解

http://www.itjxue.com  2023-01-18 09:32  来源:未知  点击次数: 

webservice返回的xml怎么解析

webservice返回的xml解析方法:

一般来说,调用webService通常需要几个步骤,在调用之前,首先需要下载Soap的jar包。

1、参数设置:上面说到的几个参数都要先设置,这主要依赖于要调用的web'Service的网址:

//?命名空间

String?nameSpace?=?"";??????

//?调用的方法名称

String?methodName?=?"getDetailInfoByTrainCode";

//?EndPoint

String?endPoint?=?"http//webservice.webxml.com.cn/WebServices/TrainTimeWebService.asmx";

//?SOAP?Action

String?soapAction?=?"http//WebXml.com.cn/getDetailInfoByTrainCode"; ?

2、指定命名空间与调用方法名

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

SoapObject?rpc?=?new?SoapObject(nameSpace,?methodName); ?

3、设置参数:

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

rpc.addProperty("TrainCode",?params[0]);

rpc.addProperty("UserID","");

4、生成调用WebService方法的SOAP请求信息

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

SoapSerializationEnvelope?envelope?=?new?SoapSerializationEnvelope(SoapEnvelope.VER12);

envelope.bodyOut?=?rpc;

5、调用WebService方法

try?{

//?调用WebService

transport.call(soapAction,?envelope);

}?catch?(Exception?e)?{

e.printStackTrace();

} ?

6、解析WebService中的DataSet数据

SoapObject?soap1=(SoapObject)object.getProperty("getDetailInfoByTrainCodeResult");

SoapObject?childs=(SoapObject)soap1.getProperty(1);

SoapObject?soap2=(SoapObject)childs.getProperty(0);

///

for(int?i=0;isoap2.getPropertyCount();i++){

SoapObject?soap3=(SoapObject)soap2.getProperty(i);

///

Info?info=new?Info();

info.setStation(soap3.getProperty(0).toString());

info.setArriveTime(soap3.getProperty(1).toString());

info.setStartTime(soap3.getProperty(2).toString());

info.setKm(soap3.getProperty(3).toString());

Raininfo.add(info);

//result=soap3.getProperty(3).toString();

}

数据格式如下:

怎么解析webservice返回的dataset数据

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

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

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

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

webservice返回的SOAP数据如何解析啊?

int count = soapObject.getPropertyCount();for(int i = 0;icount;i++){SoapObject soapChilds =(SoapObject)soapObject.getProperty(i); System.out.println(soapChilds.getProperty("description").toString());}这个是我的解析SOAP的代码,解析到最后一个Endpoint的时候,因为没有description属性,所以就会报一个 "非法的description"的错误。

如何解析从webservice返回的json

解析json我个人选择sbjson库。还有其他的如touchJSon和YAJL等选择,您可以自行下载决定(用哪个)。让我们来对什么是json以及如何用他做一点简单的描述。wikiw上说:

json(javascript

Object

Notation

的缩写)是一个基于文本的,人类可读的,开放标准的轻量级数据交换格式。它继承了javascript中的简单数据结构和相关数组对象,称为对象。不管它

和javascript的瓜葛,json是语言独立的,几乎所有编程语言都能解析它。json以键值对来表示数据。每个值被一个键名字引用(键名字是个string)。如果你想以json表示人名,他们的名字将被"name"键引用,如下:“name”

:

“James”所以json用一种容易被应用程序传递的方式表现数据,非常完美。所以当从webservice解析数据时,你要做的第一件事就是搞清楚你的模型。下面我们会分析webservice的响应数据,搞清楚哪些bit代表对象,对象数组,对象所属的字段,等等。但是json可以表示哪些类型的数据呢?1.对象是大括号内的所有东东2.字符串用双引号3.数字只是简单的显示,如

123454.

数组由中括号包围5.布尔值从'true'和'false'获得,没有引号6.null值由'null'表示,没有引号下面的例子使用了所有这些数据类型:(显然并没有bool和null类型--译者按){

"firstName":

"John",

"lastName":

"Smith",

"age":

25,

"address":

{

"streetAddress":

"21

2nd

Street","city":

"New

York","state":

"NY",

"postalCode":

"10021"

},

"phoneNumber":

[

{

"type":

"home",

"number":

"212

555-1234"},

{

"type":

"fax",

"number":

"646

555-4567"}

]

}以上数据的objective-c表示为:#import

@interface

Person

:

NSObject{

NSString

*firstName;

NSString

*lastName;

NSInteger

age;

NSDictionary

*address;

NSArray

*phoneNumbers;}

@end你会认为我们漏掉了一些信息,比如地址的详情,以及电话号码。怎么建立你的对象模型是你决定的事情。我选择了用字典保存地址详情,每个值用一个key名字引用,就像在json中一样。电话号码也保存在字典里,但是这些字典是放到数组中的。如果你希望,你可以创建一个名为Adress的类,用它来保存地址详情。这会变得更像面向对象的方式,如果在app的其他地方还要用到address,并且不必绑定到person上的话会很有用。一旦你有了自己的对象模型,你需要从json中得到数据并创建模型的实例。sbjson有一个有用的sbjsonparser类,可以在一行内搞定整个json串的解析:SBJsonParser

*jsonParser

=

[[SBJsonParser

alloc]

init];NSError

*error

=

nil;NSArray

*jsonObjects

=

[jsonParser

objectWithString:jsonString

error:error];[jsonParser

release],

jsonParser

=

nil;sbjson将json作为objective-c的字典来处理。对于不同的webservice,你可能得到一个顶级的json对象或者一个数组。因此,objectWithString:error:有一个id类型返回值。你可以使用objective-c的动态特性来决定解析返回时采用何种数据来

接收,如下:id

jsonObject

=

[jsonParser

objectWithString:jsonString

error:error];

if

([jsonObject

isKindOfClass:[NSDictionary

class]])

//

treat

as

a

dictionary,

or

reassign

to

a

dictionary

ivar

else

if

([jsonObject

isKindOfClass:[NSArray

class]])

//

treat

as

an

array

or

reassign

to

an

array

ivar.如果webservice永远只返回两种顶层表现的一种,你大可以继续并假设它会是一个数组或字典,而不必担心检查(类型)。现在你得到了以你可以通过objcetive-c管理的格式来表示json数据。你所要做的就是遍历数组/字典的内容,并创建person对象来表示他们。一件值得记住的事情是,遍历如年龄这种数字将被包裹在NSNumber对象中,所以我们需要对其调用'intValue'来得到数字。

数据通过webservice连接后,怎么解析或得的数据

直接上代码

public ListMapString, Object jsonToArray(String json) {

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

try {

JSONObject jsonobj = new JSONObject(json);

JSONArray ary = jsonobj.getJSONArray("result");

for (int i = 0; i ary.length(); i++) {

JSONObject obj = (JSONObject) ary.opt(i);

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

map.put("rid", obj.getString("rid"));

map.put("name", obj.getString("name"));

map.put("wk", obj.getString("wk"));

map.put("wboxoffice", obj.getString("wboxoffice"));

map.put("tboxoffice", obj.getString("tboxoffice"));

list.add(map);

}

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return list;

}

SoapObject result = (SoapObject) envelope.bodyIn;

SoapObject detail = (SoapObject) result.getProperty(METHOD_NAME);

for (int i = 0; i detail.getPropertyCount(); i++) {

SoapObject mstr = (SoapObject) detail.getProperty(i);

String str_result = mstr .getProperty(0).toString();

list.add(str_result); //这个需要的

}

(责任编辑:IT教学网)

更多

推荐站内动态文章