`

Xstream处理xfire的webservice复杂对象的传输

 
阅读更多
xfire项目需要引入xpp3_min-1.1.3.4.O.jar,xstream-1.2.2.jar包
客户端和服务端都是webservice项目
服务端代码
服务端复杂的实体对象
package com.testxmlstream.domain;

import java.util.List;

public class PersonMess {
public final static String PERSONMESS="personMess";
public final static String USER="user";
private String firstname;
private String lastname;
private PhoneNumber phone;
private PhoneNumber fax;
private List<User> userlist;
public PersonMess(String firstname,String lastname){
this.firstname=firstname;
this.lastname=lastname;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public PhoneNumber getPhone() {
return phone;
}
public void setPhone(PhoneNumber phone) {
this.phone = phone;
}
public PhoneNumber getFax() {
return fax;
}
public void setFax(PhoneNumber fax) {
this.fax = fax;
}
public List<User> getUserlist() {
return userlist;
}
public void setUserlist(List<User> suserlisterlist) {
this.userlist = suserlisterlist;
}

}

package com.testxmlstream.domain;

public class PhoneNumber {
private int code;
private String number;

public PhoneNumber(int code, String number) {
this.code = code;
this.number = number;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}

}

package com.testxmlstream.domain;

public class User {
private String userId;
private String userName;

public User(String userId, String userName) {
this.userId = userId;
this.userName = userName;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}

}

服务端接口与实现类
package com.testxmlstream.service;

public interface WebServiceXmlStreamService {
public String getXmlStream();
}

package com.testxmlstream.service;

import java.util.ArrayList;
import java.util.List;

import com.testxmlstream.domain.PersonMess;
import com.testxmlstream.domain.PhoneNumber;
import com.testxmlstream.domain.User;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

public class WebServiceXmlStreamServiceImp implements
WebServiceXmlStreamService {

public String getXmlStream() {
// TODO Auto-generated method stub
XStream xstream = new XStream(new DomDriver());
xstream.alias(PersonMess.PERSONMESS, PersonMess.class);
xstream.alias(PersonMess.USER, User.class);
xstream.alias("person", PersonMess.class);
xstream.alias("phonenumber", PhoneNumber.class);
PersonMess joe = new PersonMess("Joe", "Walnes");
User user=new User("11111","22222222");
User user2=new User("33333333","4444444444");
joe.setPhone(new PhoneNumber(123, "1234-456"));
joe.setFax(new PhoneNumber(123, "9999-999"));
List <User> userlist=new ArrayList<User>();
userlist.add(user);
userlist.add(user2);
joe.setUserlist(userlist);
String xml = xstream.toXML(joe);
System.out.println(xml);
return xml;
}

}

客户端通过myeclipse生成IWebServiceXmlStreamServiceClient.java,然后在生成类客户端类的main方法中加入以下代码
public static void main(String[] args) {
       

        IWebServiceXmlStreamServiceClient client = new IWebServiceXmlStreamServiceClient();
       
//create a default service endpoint
        IWebServiceXmlStreamServicePortType service = client.getIWebServiceXmlStreamServiceHttpPort();
        String xml=service.getXmlStream();
        XStream xstream = new XStream(new DomDriver());
        xstream.alias(PersonMess.PERSONMESS, PersonMess.class);
xstream.alias(PersonMess.USER, User.class);
xstream.alias("person", PersonMess.class);
xstream.alias("phonenumber", PhoneNumber.class);
PersonMess newJoe = (PersonMess)xstream.fromXML(xml);
System.out.println("-------------------------------");
System.out.println(newJoe.getFirstname());
System.out.println(newJoe.getPhone().getNumber());
List<User>userlist=newJoe.getUserlist();
for(User user:userlist){
System.out.println(user.getUserId());
}
//TODO: Add custom client code here
        //
        //service.yourServiceOperationHere();
       
System.out.println("test client completed");
        System.exit(0);
    }


分享到:
评论

相关推荐

    android XMl 解析神奇xstream 三: 把复杂对象转换成对象

    本篇文章将深入探讨如何利用XStream在Android环境中处理复杂的XML对象。 首先,我们需要了解XStream的基本用法。XStream的核心功能是它的`toXML()`和`fromXML()`方法。`toXML()`用于将Java对象转换为XML字符串,而`...

    xstream轻松解析xml到java对象

    XStream支持处理复杂的数据结构,包括集合、数组、嵌套对象等。它会自动递归处理对象树,并生成对应的XML结构。 6. **注解驱动的映射** 自XStream 1.4版本开始,可以使用注解来更精确地控制XML元素和属性的映射,...

    XStream解析xml 转换成对象案例

    它可以轻松地处理复杂的对象结构,并且提供了许多自定义选项,如日期格式化、类型转换等。但是,由于XStream默认的信任所有输入,所以在处理不受信任的数据时,必须启用安全性模式以防止XML注入攻击。 总结起来,...

    xStream 实现xml与 java对象的转换

    这个过程对于处理复杂的对象结构尤其有用,因为xStream能够自动处理嵌套的对象和集合。 以下是使用xStream进行转换的基本步骤: 1. **引入依赖**:首先,你需要在项目中引入xStream库。如果是Maven项目,可以在pom...

    使用XStream序列化/反序列化对象

    在Java编程中,序列化和反序列化是两个重要的概念,它们主要用于将对象的状态转换为可以存储或传输的形式,然后再恢复这些状态。XStream是一个强大的库,它允许开发者以XML格式进行序列化和反序列化Java对象。在这个...

    com.thoughtworks.xstream.XStream操作XML和java对象的一些用法

    XStream还提供了许多高级功能,比如自定义转换器来改变默认的XML表示,或者处理复杂的继承关系。此外,为了提高安全性,XStream提供了一种叫做"alias"的机制,可以将类名映射为更友好的XML标签。 总的来说,XStream...

    xstream 1.3.1.jar bean对象转换为xml

    此外,XStream还可以处理对象的引用,确保在XML中正确地表示对象之间的关系。 **使用XStream进行Bean到XML转换的步骤:** 1. **引入库**:首先,你需要在项目中引入XStream库,这可以通过添加对应的jar文件(如...

    Java用xStream拼接xml

    当需要将数据转换为XML格式以便于传输或处理时,工具如xStream就显得尤为重要。Java中的xStream库提供了一个简单易用的方式来将Java对象序列化为XML,反之亦然,即反序列化XML回Java对象。 **xStream简介** xStream...

    好用的xStream XML和JAVA对象互相转换的简单示例

    此外,XStream还可以处理泛型和复杂的继承结构,使得XML和Java对象之间的转换更加灵活。在处理大型项目时,这些功能显得尤为重要。 总的来说,XStream是一个强大的工具,它使得Java开发者能够轻松地在XML和Java对象...

    android XMl 解析神奇xstream 二: 把对象转换成xml

    6. **处理复杂的对象结构**:XStream可以处理嵌套的对象和集合。例如,`Person`类包含一个`Address`对象和一个`Contact`列表: ```java public class Address { private String street; private String city; }...

    XStream和Xpp3实现对象到XML的互转参考文档

    总结起来,XStream和Xpp3提供了一种方便的方式来处理Java对象和XML之间的转换。在实际应用中,你可以根据需求自定义类结构,同时利用XStream的别名功能简化XML结构。遇到问题时,检查JDK版本和类文件的兼容性,通常...

    使用XStream是实现XML与Java对象的转换(4)--转换器

    当处理复杂的嵌套对象时,HierarchicalStreamConverter更有用。这种转换器可以遍历整个XML树,处理任意深度的嵌套结构。例如,你可以创建一个转换器来处理树形结构的数据,如目录树。 5. **自定义XML标签名** ...

    XStream在Java对象和XML之间相互转换

    它支持基本数据类型、自定义类、集合、Map以及嵌套对象的转换,并且可以通过自定义转换器来处理复杂的数据结构。 3. **kxml2-2.3.0.jar**: KXML2是一个轻量级的XML解析器,适用于Android和Java平台。XStream使用...

    Xstream_java对象和xml的互相转换

    XStream 是一个强大的 Java 库,它允许程序员轻松地将 Java 对象序列化为 XML,同时也能从 XML 数据中反序列化回原来的 Java 对象。这个功能在数据持久化、网络传输或者配置文件存储等方面非常有用。XStream 的设计...

    xstream-1.4.9实现xml与对象互转

    在 XStream 1.4.9 版本中,开发者可以轻松地处理 XML 文档,将其转换为 Java 对象,或者将 Java 对象转换为 XML,用于数据存储、网络传输或配置文件等目的。 **XStream 的工作原理** XStream 的核心思想是通过元...

    使用XStream是实现XML与Java对象的转换(5)--Object Stream

    除了基本类型和字符串,XStream还可以处理复杂的对象结构,包括嵌套的对象、集合、甚至自定义的转换规则。例如,你可以通过注册一个Converter来改变默认的序列化行为。 在实际应用中,XStream还提供了许多高级特性...

    xstream-1.4.3.jar 包 对象转xml

    xstream-1.4.3.jar 包 对象转xmlxstream-1.4.3.jar 包 对象转xmlxstream-1.4.3.jar 包 对象转xmlxstream-1.4.3.jar 包 对象转xmlxstream-1.4.3.jar 包 对象转xmlxstream-1.4.3.jar 包 对象转xmlxstream-1.4.3.jar 包...

    XStream使用方法总结-对象-转换.txt

    XStream提供了丰富的API接口,使得开发者能够轻松地定制转换规则,支持各种复杂的Java对象结构。 #### 二、基本使用 1. **创建XStream实例** 创建一个`XStream`实例是最基本的操作,通常只需要调用`new XStream...

    xstream对象与xml转换

    在实际应用中,你可能会处理更复杂的数据结构,如包含嵌套对象或集合。XStream可以自动处理这些情况,只需确保对象的结构与XML文档相匹配。例如,如果Person类有一个List属性: ```java public class Person { ...

Global site tag (gtag.js) - Google Analytics