在使用WebService时,可以传递复杂的对象,如本例中的Policy,但是WebService的实现经常有问题,为了规避这个问题,我们可以采用传一个XML串的方式变通实现。其中最主要的问题,Java对象和XML之间的转换通过XStream可以很好地解决。
XStream是一个开源项目,一套简单实用的类库,用于序列化对象与XML对象之间的相互转换。将XML文件内容解析为一个对象或将一个对象序列化为XML文件。XStream可以用于JDK1.3以上的版本使用。
其使用方式非常简单,下面给出一个例子:
- package cn.com.sinosoft.test;
- import java.io.Serializable;
- import java.util.ArrayList;
- import java.util.List;
- import com.thoughtworks.xstream.XStream;
- public class XStreamTest {
- public static void main(String[] args) {
- Policy policy = createTestPolicy();
- XStream xstream = new XStream( );
- //xstream.alias("policy", Policy.class);
- //xstream.alias("item", Item.class);
- String xml = xstream.toXML(policy);
- System.out.println(xml);
- Policy newPolicy = (Policy)xstream.fromXML(xml);
- System.out.println(xstream.toXML(newPolicy));
- }
- private static Policy createTestPolicy(){
- Policy policy = new Policy();
- policy.setPolicyNo("测试保单号");
- List items = new ArrayList();
- policy.setItems(items);
- Item item = new Item();
- item.setItemCode("001");
- item.setItemCode("基本信息");
- items.add(item);
- item = new Item();
- item.setItemCode("002");
- item.setItemCode("扩展信息");
- items.add(item);
- return policy;
- }
- }
- class Policy implements Serializable{
- private static final long serialVersionUID = 1L;
- private String policyNo;
- private List items;
- public String getPolicyNo() {
- return policyNo;
- }
- public void setPolicyNo(String policyNo) {
- this.policyNo = policyNo;
- }
- public List getItems() {
- return items;
- }
- public void setItems(List items) {
- this.items = items;
- }
- }
- class Item implements Serializable{
- private static final long serialVersionUID = 1L;
- private String itemCode;
- private String itemName;
- public String getItemCode() {
- return itemCode;
- }
- public void setItemCode(String itemCode) {
- this.itemCode = itemCode;
- }
- public String getItemName() {
- return itemName;
- }
- public void setItemName(String itemName) {
- this.itemName = itemName;
- }
- }
其中,实例化时需要xstream-[version].jar and xpp3-[version].jar在classpath中。XPP3是一个非常快的XML拉式转换器工具。如果你不想包含这个依赖,你可以使用标准的JAXP DOM转换器来代替。
:这个类的简单设计是为了实现通用操作的。为了实现更复杂的操作你可以选择自己创建出不同方式。
为了使用XStream来更精简的输出XML,你可以为自定义的类创建别名到XML的元素名的映射。这是使用XStream唯一需要的映射的,甚至这个都是可选的。
- xstream.alias("policy", Policy.class);
相关推荐
要将XML转换为Java对象,首先需要一个对应的Java类,该类的字段与XML元素对应。JAXB通过注解这些字段来完成映射,如`@XmlElement`、`@XmlAttribute`等。以下是一个简单的例子: ```java import javax.xml.bind....
XStream是一款强大的Java库,主要用于将Java对象序列...在实际开发中,XStream的简单性和灵活性使其成为处理Java对象与XML数据之间转换的首选工具。通过合理配置和使用,可以极大地提高开发效率并简化数据处理流程。
总结起来,JAXBContext是Java对象和XML之间转换的关键组件。通过创建JAXBContext实例,我们可以轻松地实现Java对象的XML序列化和反序列化。这个过程大大简化了XML数据的处理,提高了开发效率,尤其是在需要处理大量...
本示例"JAVA对象与XML相互转化DEMO"聚焦于如何在Java中实现对象与XML之间的互转,这对于理解和处理数据交换至关重要。 首先,Java中实现XML到对象的转换主要依赖于JAXB(Java Architecture for XML Binding)。JAXB...
但是,Java 对象与 XML 之间的转换却是一个复杂的问题,需要开发者们具备一定的技术背景和实践经验。 在本文中,我们将讨论 Java 对象与 XML 之间的转换,特别是使用 Castor 进行 Java 对象与 XML 之间的转换。 ...
Java Architecture for XML Binding (JAXB) 是一个Java标准,它提供了在Java对象和XML文档之间进行自动转换的能力。这项技术极大地简化了XML数据处理,使得开发者可以方便地将Java对象序列化为XML,或者从XML数据中...
在Java对象和XML之间的转换过程中,JAXB主要涉及到以下几个关键概念: 1. **Java类与XML Schema绑定**: JAXB使用`@XmlRootElement`和`@XmlElement`等注解将Java类的字段与XML元素对应。XML Schema定义了XML文档的...
JAXB允许我们将Java类绑定到XML Schema,从而能够方便地在Java对象和XML文档之间进行转换。要使用JAXB,你需要定义一个Java类,该类的字段对应于XML元素,然后使用JAXB提供的API将该对象转换为XML。 以下是一个简单...
本代码主要是Java对象和Xml之间的转换实例代码,如果想具体指导代码是如何搭建的,可以参照http://blog.csdn.net/songdeitao/article/details/17304395这篇博文,这里的代码是和此对应的。
JAXB(Java Architecture for XML Binding)是Java提供的一种标准API,它允许开发者轻松地在Java对象和XML文档之间进行映射。在这个过程中,`JAXBContext`和`Marshaller`扮演了关键角色。 `JAXBContext`是JAXB的...
要将Java对象转换成XML并包含CDATA,我们可以利用如XStream这样的库。XStream是一个简单且功能强大的库,用于将Java对象转换为XML,反之亦然。在上述例子中,我们看到了一个自定义的实现过程,包括三个主要类:...
5. **生成序列化和反序列化代码**:为了方便XML数据和Java对象之间的转换,工具还会生成解析XML和生成XML的代码,通常是基于JAXB(Java Architecture for XML Binding)或其他类似库。 除了XSD转Java,有些工具还...
将XML数据转换为Java对象,能够方便地在两者之间进行数据操作和处理。在这个过程中,XStream库扮演了关键角色。 XStream是一个强大的Java库,它可以将Java对象序列化为XML,同时也能将XML反序列化为等效的Java对象...
总结来说,XStream 是一个强大且灵活的 Java 库,它简化了 Java 对象与 XML 数据之间的转换过程,提供了高度可定制的序列化和反序列化功能。通过合理利用它的特性,开发者可以在不牺牲代码可读性和可维护性的同时,...
在Java对象到XML转换的上下文中,它可能是用来可视化对象模型或转换过程的图表。 综上所述,Java对象到XML的转换是一个多方面的话题,涵盖了多种技术和库。理解并熟练掌握这些技术对于Java开发人员来说至关重要,...
4. **XStream**:这是一个轻量级的库,允许Java对象和XML之间的简单映射。只需添加注解到你的Java类,XStream就可以自动处理转换。 二、XML转Java对象 1. **JAXB反序列化**:与序列化相反,你可以使用`...
xml报文和java对象互相转换 相关jar包和测试代码,可以与castor插件java对象和XML自动绑定maping文件生成和java对象一键生成工具1.2(https://download.csdn.net/download/kemoing/10864595)完美配合使用
虽然`XMLEncoder`和`XMLDecoder`提供了一种方便的方式来处理XML和Java对象之间的转换,但它们并不总是最佳选择。例如,它们可能无法处理复杂的对象结构或自定义的XML格式。在这些情况下,可能需要使用更强大的库,如...
Java对象到XML转换是开发过程中常见的需求,尤其是在处理数据交换或者序列化时。XML因其结构化和可读性,常被用作数据存储和传输格式。然而,将Java对象转换为XML并不总是那么直观,特别是在处理复杂对象结构时。本...