求教大神,我新建的java webservice 从客户端传过来的xml格式字符串 怎么解析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求教大神,我新建的java webservice 从客户端传过来的xml格式字符串 怎么解析相关的知识,希望对你有一定的参考价值。

如果是你自己练手,怎么解析都可以,dom什么的,甚至可以自己从字符串里读取需要的内容。

实际应用中,我是这样做的:
1 定义 .xsd 文件,就是xml的定义文件。
2 服务器端 用jaxb把 .xsd 文件转换成 .java 文件。
3 把 .xsd 给客户端,客户端自己转换成 .java 文件。(或者直接把 .java 文件给客户端)
4 客户端用.java 文件产生 object,然后set方法把object的内容添满。
5 客户端 Jaxb Unmarshaller object 得到xml,这个xml通过webService传到server。
6 服务器得到xml, Jaxb Marshaller xml 得到 object。
7 服务器处理 object。
参考技术A public class TestMain
public static void main(String args[]) throws AxisFault
// 使用RPC方式调用WebService
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
// 指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference(
"http://127.0.0.1:8080/services/helloServiceNew?wsdl");
options.setTo(targetEPR);
// 指定方法的参数值
Object[] opAddEntryArgs = new Object[] "美女";
// 指定方法返回值的数据类型的Class对象
Class[] classes = new Class[] String.class ;
/**
* 在创建QName对象时,QName类的构造方法的第一个参数表示WSDL文件的命名空间名,
* 也就是<wsdl:definitions>元素的targetNamespace属性值指定要调用的getWorld方法
* 及WSDL文件的命名空间....
* */
QName opAddEntry = new QName("http://webservice.sinosoft.com",
"sayHelloToPersonNew");
// 调用sayHelloToPerson方法并输出该方法的返回值
System.out.println(serviceClient.invokeBlocking(opAddEntry,
opAddEntryArgs, classes)[0]);

//调用没有返回值的方法
Object[] o=new Object[]"QQ";
QName qname=new QName("http://webservice.sinosoft.com","updateData");
serviceClient.invokeRobust(qname,o);



给你参考下追问

你写的是客户端的代码吧 我想问 如果客户端传来一个xml字符串,我要怎么去解析

追答

java里面有解析包,看下这个http://www.cnblogs.com/macula/archive/2011/07/27/2118003.html
你说调用dom4j报错,可能是你的jar包冲突了

参考技术B 可以使用dom4J,专门用来帮助java程序解析xml格式的文件。
百度文库:http://wenku.baidu.com/view/90d60cc9a1c7aa00b52acbb5.html追问

我试过了 我在service端调用了dom4j 就会报错,不仅如此,调用asix2也会报错

追答

错误信息能发上来吗?

用Java调用webservice,并解析返回值,大神们 求助

简单通用点的,谢谢了,也可以qq邮箱707883800 别报错啊

你是哪个公司?我在上班,我不能上QQ,我给你贴代码,有问题你追问我!
private void 方法名(String storecd)
// 传递参数
param.clear();
param.put("webservice的输入值的名字,(必须完全一样)", 参数);
//连接web service
openRequest(getString(R.string.EXSERVER_SCRAP_GetShipName), param,
DataAccessMode.Asynchronous, dataAccessHandler);


//数据处理
private IDataAccessHandler dataAccessHandler = new AbstractDataAccessHandler(
this)
@Override
//数据异常处理
public void onExceptionHandler(PacerURLRequest request, String errMessage)
currentDialog=showAlertDialog_OK(getString(R.string.MESSAGE_CODE_08),
getString(R.string.MSG_COMMON_OK),
new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)


);


//处理获取的数据
public void onDataReadyHandler(PacerURLRequest request)
try
DataAccessBundle bundle = request.getBundle();
if (getString(R.string.EXSERVER_SCRAP_GetShipName).equals(request.getResource()))
ArrayList<Object> table0 = bundle.getTable("Table0");
ScrapScan_Table0_GetShipName prod = (ScrapScan_Table0_GetShipName) table0.get(0);
shopname.setText(prod.getPlc_nm());

catch (Exception e)
showAlertDialog_OK("店铺号不存在,请输入正确的店铺号!",
getString(R.string.MSG_COMMON_OK), null);
e.printStackTrace();



@Override
//错误数据处理
public void onDataErrorHandler(PacerURLRequest request)


;追问

这么多?我看了看网上的,没这么多呢?我就是用java从webservice获取了数据后(好像都是xml吧)在java这边在解析出来

追答

我知道,我和你做的一样,我也在网上查了,都不好使,这绝对正确

追问

这直接能用?我这是第一次弄webservice这东西,所以不知道咋弄,你有例子吗?能给我个吗

追答

公司的内部资料,不能给的不好意思

追问

哦,上面这能从webservice获取数据,在解析出来?我放程序里,还有错呢,忘说了,我是刚接触webservice,想学学

参考技术A http://www.blogjava.net/tianchijiaozi/archive/2013/03/15/396452.html

我用这个例子入门的,非常好。再具体的调用就得自己研究了,或者发出来大家探讨也行。

以上是关于求教大神,我新建的java webservice 从客户端传过来的xml格式字符串 怎么解析的主要内容,如果未能解决你的问题,请参考以下文章

用Java调用webservice,并解析返回值,大神们 求助

求教大神,java中关于String类的getBytes()方法的问题

求教各位大神,我要上线一个JAVA程序的网站,现在要托管一个服务器,我们有一台2U的DELL服务器

java PKIX path validation failed 求教大神帮助解决

求教mongodb大神,在java中怎么以时间为条件查询

myeclipse2014破解时run.bat一闪而过,内部运行就这样了,求教大神!!