求教大神,我新建的java webservice 从客户端传过来的xml格式字符串 怎么解析
3个回答
展开全部
如果是你自己练手,怎么解析都可以,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。
实际应用中,我是这样做的:
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。
展开全部
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);
}
}
给你参考下
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包冲突了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以使用dom4J,专门用来帮助java程序解析xml格式的文件。
百度文库:http://wenku.baidu.com/view/90d60cc9a1c7aa00b52acbb5.html
百度文库:http://wenku.baidu.com/view/90d60cc9a1c7aa00b52acbb5.html
追问
我试过了 我在service端调用了dom4j 就会报错,不仅如此,调用asix2也会报错
追答
错误信息能发上来吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询