`

Java对象和XML之间的转换

 
阅读更多

在使用WebService时,可以传递复杂的对象,如本例中的Policy,但是WebService的实现经常有问题,为了规避这个问题,我们可以采用传一个XML串的方式变通实现。其中最主要的问题,Java对象和XML之间的转换通过XStream可以很好地解决。

XStream是一个开源项目,一套简单实用的类库,用于序列化对象与XML对象之间的相互转换。将XML文件内容解析为一个对象或将一个对象序列化为XML文件。XStream可以用于JDK1.3以上的版本使用。

其使用方式非常简单,下面给出一个例子:

  1. package cn.com.sinosoft.test;
  2. import java.io.Serializable;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import com.thoughtworks.xstream.XStream;
  6. public class XStreamTest {
  7.     public static void main(String[] args) { 
  8.         Policy policy = createTestPolicy();
  9.         XStream xstream = new XStream( ); 
  10.         //xstream.alias("policy", Policy.class);
  11.         //xstream.alias("item", Item.class);
  12.         String xml = xstream.toXML(policy); 
  13.         System.out.println(xml);
  14.         
  15.         Policy newPolicy = (Policy)xstream.fromXML(xml); 
  16.         System.out.println(xstream.toXML(newPolicy));
  17.     }
  18.     private static Policy createTestPolicy(){
  19.         Policy policy = new Policy();
  20.         policy.setPolicyNo("测试保单号");
  21.         List items = new ArrayList();
  22.         policy.setItems(items);
  23.         Item item = new Item();     
  24.         item.setItemCode("001");
  25.         item.setItemCode("基本信息");
  26.         items.add(item);
  27.         item = new Item();
  28.         item.setItemCode("002");
  29.         item.setItemCode("扩展信息");
  30.         items.add(item);        
  31.         return policy;
  32.     }
  33. }
  34. class Policy implements Serializable{ 
  35.     private static final long serialVersionUID = 1L;
  36.     private String policyNo;
  37.     private List items;
  38.     public String getPolicyNo() {
  39.         return policyNo;
  40.     }
  41.     public void setPolicyNo(String policyNo) {
  42.         this.policyNo = policyNo;
  43.     }
  44.     public List getItems() {
  45.         return items;
  46.     }
  47.     public void setItems(List items) {
  48.         this.items = items;
  49.     }
  50. }
  51. class Item implements Serializable{ 
  52.     private static final long serialVersionUID = 1L;
  53.     private String itemCode;
  54.     private String itemName;
  55.     public String getItemCode() {
  56.         return itemCode;
  57.     }
  58.     public void setItemCode(String itemCode) {
  59.         this.itemCode = itemCode;
  60.     }
  61.     public String getItemName() {
  62.         return itemName;
  63.     }
  64.     public void setItemName(String itemName) {
  65.         this.itemName = itemName;
  66.     }
  67. }

其中,实例化时需要xstream-[version].jar and xpp3-[version].jar在classpath中。XPP3是一个非常快的XML拉式转换器工具。如果你不想包含这个依赖,你可以使用标准的JAXP DOM转换器来代替。

 

:这个类的简单设计是为了实现通用操作的。为了实现更复杂的操作你可以选择自己创建出不同方式。

 

为了使用XStream来更精简的输出XML,你可以为自定义的类创建别名到XML的元素名的映射。这是使用XStream唯一需要的映射的,甚至这个都是可选的。

  1. xstream.alias("policy", Policy.class); 
分享到:
评论

相关推荐

    JAXB工具类 xml转为java对象 java对象转为xml

    要将XML转换为Java对象,首先需要一个对应的Java类,该类的字段与XML元素对应。JAXB通过注解这些字段来完成映射,如`@XmlElement`、`@XmlAttribute`等。以下是一个简单的例子: ```java import javax.xml.bind....

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

    XStream是一款强大的Java库,主要用于将Java对象序列...在实际开发中,XStream的简单性和灵活性使其成为处理Java对象与XML数据之间转换的首选工具。通过合理配置和使用,可以极大地提高开发效率并简化数据处理流程。

    JAVA对象与XML相互转化DEMO

    本示例"JAVA对象与XML相互转化DEMO"聚焦于如何在Java中实现对象与XML之间的互转,这对于理解和处理数据交换至关重要。 首先,Java中实现XML到对象的转换主要依赖于JAXB(Java Architecture for XML Binding)。JAXB...

    java对象与xml间的转换.docx

    但是,Java 对象与 XML 之间的转换却是一个复杂的问题,需要开发者们具备一定的技术背景和实践经验。 在本文中,我们将讨论 Java 对象与 XML 之间的转换,特别是使用 Castor 进行 Java 对象与 XML 之间的转换。 ...

    通过JAXB实现完成java对象和xml的互相转换

    Java Architecture for XML Binding (JAXB) 是一个Java标准,它提供了在Java对象和XML文档之间进行自动转换的能力。这项技术极大地简化了XML数据处理,使得开发者可以方便地将Java对象序列化为XML,或者从XML数据中...

    [转载] JAXB中Java对象和XML之间的转换

    在Java对象和XML之间的转换过程中,JAXB主要涉及到以下几个关键概念: 1. **Java类与XML Schema绑定**: JAXB使用`@XmlRootElement`和`@XmlElement`等注解将Java类的字段与XML元素对应。XML Schema定义了XML文档的...

    java对象与xml的互相转换

    JAXB允许我们将Java类绑定到XML Schema,从而能够方便地在Java对象和XML文档之间进行转换。要使用JAXB,你需要定义一个Java类,该类的字段对应于XML元素,然后使用JAXB提供的API将该对象转换为XML。 以下是一个简单...

    JAXBContext测试Java对象与xml的相互转换Demo

    总结起来,JAXBContext是Java对象和XML之间转换的关键组件。通过创建JAXBContext实例,我们可以轻松地实现Java对象的XML序列化和反序列化。这个过程大大简化了XML数据的处理,提高了开发效率,尤其是在需要处理大量...

    玩转Java对象和XML之间的转换

    本代码主要是Java对象和Xml之间的转换实例代码,如果想具体指导代码是如何搭建的,可以参照http://blog.csdn.net/songdeitao/article/details/17304395这篇博文,这里的代码是和此对应的。

    java对象生成xml数据

    JAXB(Java Architecture for XML Binding)是Java提供的一种标准API,它允许开发者轻松地在Java对象和XML文档之间进行映射。在这个过程中,`JAXBContext`和`Marshaller`扮演了关键角色。 `JAXBContext`是JAXB的...

    Xstream_java对象和xml的互相转换

    总结来说,XStream 是一个强大且灵活的 Java 库,它简化了 Java 对象与 XML 数据之间的转换过程,提供了高度可定制的序列化和反序列化功能。通过合理利用它的特性,开发者可以在不牺牲代码可读性和可维护性的同时,...

    java对象转Xml

    在Java对象到XML转换的上下文中,它可能是用来可视化对象模型或转换过程的图表。 综上所述,Java对象到XML的转换是一个多方面的话题,涵盖了多种技术和库。理解并熟练掌握这些技术对于Java开发人员来说至关重要,...

    JAVA对象转换成XML(CDATA)

    要将Java对象转换成XML并包含CDATA,我们可以利用如XStream这样的库。XStream是一个简单且功能强大的库,用于将Java对象转换为XML,反之亦然。在上述例子中,我们看到了一个自定义的实现过程,包括三个主要类:...

    JAVA对象序列化保存为XML文件的工具类

    虽然`XMLEncoder`和`XMLDecoder`提供了一种方便的方式来处理XML和Java对象之间的转换,但它们并不总是最佳选择。例如,它们可能无法处理复杂的对象结构或自定义的XML格式。在这些情况下,可能需要使用更强大的库,如...

    JAVA对象与XML互转

    4. **XStream**:这是一个轻量级的库,允许Java对象和XML之间的简单映射。只需添加注解到你的Java类,XStream就可以自动处理转换。 二、XML转Java对象 1. **JAXB反序列化**:与序列化相反,你可以使用`...

    xml文件自动转成java对象工具

    5. **生成序列化和反序列化代码**:为了方便XML数据和Java对象之间的转换,工具还会生成解析XML和生成XML的代码,通常是基于JAXB(Java Architecture for XML Binding)或其他类似库。 除了XSD转Java,有些工具还...

    xml报文和java对象互相转换 相关jar包和测试代码

    xml报文和java对象互相转换 相关jar包和测试代码,可以与castor插件java对象和XML自动绑定maping文件生成和java对象一键生成工具1.2(https://download.csdn.net/download/kemoing/10864595)完美配合使用

    史上最牛逼的java对象转xml算法

    Java对象到XML转换是开发过程中常见的需求,尤其是在处理数据交换或者序列化时。XML因其结构化和可读性,常被用作数据存储和传输格式。然而,将Java对象转换为XML并不总是那么直观,特别是在处理复杂对象结构时。本...

    java对象转换成xml格式

    JAXB是Java SE的一部分,它提供了将Java对象直接转换为XML文档,以及从XML文档反序列化回Java对象的能力。首先,你需要为要转换的对象创建对应的Java类,并使用`@XmlRootElement`、`@XmlElement`等注解来指定XML...

Global site tag (gtag.js) - Google Analytics