`

Java xml与实体Bean的转换

    博客分类:
  • java
阅读更多
1、pom.xml依赖包:
  <dependency>
      <groupId>com.thoughtworks.xstream</groupId>
      <artifactId>xstream</artifactId>
      <version>1.4.7</version>
    </dependency>

2、java代码实现转换
bean实体类:
User.java
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
 // 别名注解,这个别名就是XML文档中的元素名,Java的属性名不一定要与别名一致
@XStreamAlias("user")
public class User {
    @XStreamAlias("name")
    private String name;
    @XStreamAlias("age")
    private String age;
    @XStreamAlias("id")
// 属性注解,此price就是book的属性,在XML中显示为:<user id="1">
    @XStreamAsAttribute 
    private Integer id;
    @XStreamAlias("address")
    private String address;
    @XStreamAlias("card")
    private String card;
    @XStreamAlias("gender")
    private String gender;
   /** setter和getter省略  */
}

UserList.java
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

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

@XStreamAlias("users")
public class UserList {
    @XStreamAlias("value")
    @XStreamAsAttribute
    private String value;
 // 隐式集合,加上这个注解可以去掉book集合最外面的<list></list>这样的标记
    @XStreamImplicit
    private List<User> list = new ArrayList<User>();
    public void addUser(User user){
        this.list.add(user);
    }
  /** setter和getter省略  */
}

3、xml转bean
  public static void xmlToBean(){
         String xmlStr ="<users value=\"0\">\n" +
                 "  <user id=\"1\">\n" +
                 "    <name>jiandequn</name>\n" +
                 "    <age>29</age>\n" +
                 "    <address>深圳市西丽白芒村</address>\n" +
                 "    <card>1546464</card>\n" +
                 "    <gender>male</gender>\n" +
                 "  </user>\n" +
                 "</users>";
         XStream xStream = new XStream(new DomDriver("utf-8"));
        xStream.processAnnotations(UserList.class);; // 识别obj类中的注解
        UserList userList = (UserList) xStream.fromXML(xmlStr);
        System.out.println(userList.getValue());
    }

4、bean转xml
   public static void beanToXml(){
        User user = new User();
        user.setAddress("深圳市西丽白芒村");
        user.setAge("29");
        user.setCard("1546464");
        user.setId(1);
        user.setGender("male");
        user.setName("jiandequn");
        UserList userList = new UserList();
        userList.setValue("0");
        userList.addUser(user);
        XStream xStream = new XStream(new DomDriver("utf-8"));
        xStream.processAnnotations(userList.getClass());; // 识别obj类中的注解
// 以压缩的方式输出XML
//        StringWriter sw = new StringWriter();
//        xStream.marshal(userList, new CompactWriter(sw));
     // 以格式化的方式输出XML
        System.out.println( xStream.toXML(userList));
    }

bean转xml输出结果:
<users value="0">
  <user id="1">
    <name>jiandequn</name>
    <age>29</age>
    <address>深圳市西丽白芒村</address>
    <card>1546464</card>
    <gender>male</gender>
  </user>
</users>



    除了上面示例中用的注解,xstream还有下面几种注解也经常用到。
    @XstreamOmitField 忽略字段
    这相当于设置某些字段为临时属性,在转换中不再起作用。
    @XStreamConverter(XXX.class)  转换器
    XXX.class是一个实现了com.thoughtworks.xstream.converters.Converter接口的转换器,对某些类型的值进行转换,比如布尔值类型的true或false,如果不加转换器,默认生成的值就是true或false。xstream自带了BooleanConverter转换器,可以将默认值转换成需要的文本值,如果xstream没有需要的转换器就得自己实现Converter接口来自定义转换器。
    根据大象的经验,为了少给自己找麻烦,比如避免使用转换器,最好将与XML元素或属性对应的Java对象属性都设置成String类型,当然列表还是要定义成List类型的。只要不是特别奇葩,一般情况下,示例部分就能满足绝大部分的需求。
分享到:
评论

相关推荐

    xml 转Java bean工具

    XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件以及对象序列化等领域。...对于处理大量XML数据或者频繁进行XML到Java Bean转换的项目,这样的工具是不可或缺的。

    JavaXml及Bean互转

    - 使用`toXML()`方法将Java Bean转换为XML字符串。 - 使用`fromXML()`方法将XML字符串转换为Java Bean。 3. **示例**: ```java import com.thoughtworks.xstream.XStream; public class XStreamDemo { ...

    任意XML转实体类 实体类 转XML 方法 JAVA

    将XML数据转换为Java实体类(Bean)以及将实体类转换回XML是两个重要的操作,这对于数据的序列化和反序列化至关重要。下面将详细解释这两个过程以及涉及的相关知识点。 首先,XML转实体类的过程通常涉及到Java的...

    各种转换,xml,实体bean,动态bean,map等

    标题和描述中提到的"各种转换,xml,实体bean,动态bean,map等"涉及了Java编程语言中的一些核心概念,这些概念在企业级应用开发中非常常见。下面我们将详细探讨这些知识点。 1. **XML(Extensible Markup Language)*...

    使用Betwixt将XML转为JAVA Bean(内有JAR包)

    测试通常会创建一个包含相同节点名的XML文件,然后将其转换为Java Bean,再将该Bean转换回XML,最后比较原始XML和新生成的XML是否一致。 总之,Betwixt提供了一种方便的方式来处理Java对象与XML之间的转换,即使在...

    java-xml自动生成对象实体以及与xml相互转化.zip_Java doc转xml_java xml 转 实体_java 毕

    标题中的“java-xml自动生成对象实体以及与xml相互转化”指的是使用Java技术将XML文件转换为Java对象(即Java Bean),反之亦然。这一过程通常涉及到以下几个关键知识点: 1. **Java DOM解析器**:DOM(Document ...

    java项目实体类转换实例

    Java项目实体类转换实例 在Java项目中,实体类转换是指将一个实体类对象转换为另一个实体类对象的过程。在这种情况下,我们可以使用Dozer库来实现实体类转换。Dozer是一个开源的Java类库,用于将一个Java对象转换...

    xstream 1.3.1.jar bean对象转换为xml

    在这个版本中,XStream提供了对Java Bean对象转换为XML的全面支持。 **XStream的工作原理:** XStream的核心是基于反射的,它通过分析Java对象的类结构来构建XML表示。它使用了一种称为"alias"的概念,允许我们将...

    xml文件和java实体类(bean)相互转化 源码献上,导入(My)eclipse,可直接运行看效果。

    XML文件和Java实体类(Bean)之间的转换是Java开发中常见的需求,特别是在处理数据持久化、Web服务或者配置文件时。下面将详细讲解这个过程,以及如何实现它们之间的相互转化。 1. XML到Java实体类的转换: 这个...

    xml和bean之间的相互转换源码

    下面将详细解释XML与Bean之间的转换原理、相关API以及其实现步骤。 1. **XML到Bean的转换**: 当我们需要将XML文件解析为Java对象时,通常会使用`JAXB(Java Architecture for XML Binding)`或者`DOM(Document ...

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

    通过自动化的转换,可以保证Java类与XML结构的一致性,减少手动编码的错误。此外,这些工具也使得XML数据的处理更加模块化,提高了代码的可维护性和可扩展性。 在使用这类工具时,需要注意的是,生成的Java类可能...

    JAVA对象转换成XML(CDATA)

    在Java编程中,将对象转换成XML是一种常见的数据序列化方式,这有助于数据交换和存储。当遇到包含特殊字符如 "和 "&" 的文本时,XML解析器可能会产生错误,因为这些字符在XML语法中有特定含义。为了解决这个问题,...

    java 解析xml 多级

    此外,JAXB(Java Architecture for XML Binding)是另一种强大的工具,它可以将XML与Java对象直接映射,方便数据的序列化和反序列化。对于多级XML,JAXB提供了一种更加面向对象的方式来处理数据,但需要额外的配置...

    java类与xml之间相互转换实例

    Java 类与XML之间的相互转换是Java开发中常见的一项任务,特别是在处理配置文件、数据持久化或者网络通信时。XStream库提供了一种简单且高效的方式来实现这种转换,它是一个Java库,可以将Java对象序列化为XML,也...

    xstream实现xml和java bean 互相转换

    它可以将Java对象转换为XML文档,也可以将XML文档转换为Java对象。 pom引用 &lt;groupId&gt;com.thoughtworks.xstream&lt;/groupId&gt; &lt;artifactId&gt;xstream &lt;version&gt;1.4.20 实体类和测试类详见博客 ...

    MySql转Java实体类

    本文将详细探讨如何将MySQL中的表转换为Java实体类。 1. **什么是Java实体类** Java实体类通常代表数据库中的一个表,每个属性对应表的一列,而方法则对应于对这些数据的操作。实体类是ORM(对象关系映射)框架如...

    读取文件数据并解析成bean实体类

    4. **对象映射(对象-XML/JSON映射)**:这是一种将数据结构(如Bean)与数据格式(如XML或JSON)之间进行转换的技术。比如,使用Jackson库的`ObjectMapper`可以方便地将JSON字符串解析成Bean,反之亦然。 5. **...

    xml转javaBean,javaBean转xml,xml标签大小写问题,以及对xml特殊符号的处理

    总结,XML与JavaBean之间的转换是Java开发中的常见操作,理解XML的大小写规则、特殊符号处理和CDATA的使用对于编写健壮的XML处理代码至关重要。掌握这些知识可以帮助开发者更有效地在XML和Java对象之间进行数据交换...

    poi excel转换成bean

    描述中提到的“二级Java Bean转换”是指在Excel表格中可能存在嵌套的数据结构,比如一个单元格的数据是另一个复杂对象的表示。在这种情况下,你可以创建第二个Java Bean类来表示这个复杂对象,然后在主Java Bean中...

    JAVA程序设计 EJB、XML与数据库

    数据库方面,EJB中的实体bean通常会与数据库表进行映射,利用JPA(Java Persistence API)或Hibernate等技术实现ORM。 总结来说,《JAVA程序设计 EJB、XML与数据库》这本书涵盖了Java开发中的关键领域,不仅讲解了...

Global site tag (gtag.js) - Google Analytics