`
zysnba
  • 浏览: 183769 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java对xml和对象互转

阅读更多
第一步建立xmlutil
package com.demo.util;


import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

/**
* 封装了XML转换成object,object转换成XML的代码
*
* @author zysnba
*
*/
public class XMLUtil {
    /**
     * 将对象直接转换成String类型的 XML输出
     *
     * @param obj
     * @return
     */
    public static String convertToXml(Object obj) {
        // 创建输出流
        StringWriter sw = new StringWriter();
        try {
            // 利用jdk中自带的转换类实现
            JAXBContext context = JAXBContext.newInstance(obj.getClass());

            Marshaller marshaller = context.createMarshaller();
            // 格式化xml输出的格式
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
                    Boolean.TRUE);
            // 将对象转换成输出流形式的xml
            marshaller.marshal(obj, sw);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return sw.toString();
    }

    /**
     * 将对象根据路径转换成xml文件
     *
     * @param obj
     * @param path
     * @return
     */
    public static void convertToXml(Object obj, String path) {
        try {
            // 利用jdk中自带的转换类实现
            JAXBContext context = JAXBContext.newInstance(obj.getClass());

            Marshaller marshaller = context.createMarshaller();
            // 格式化xml输出的格式
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
                    Boolean.TRUE);
            // 将对象转换成输出流形式的xml
            // 创建输出流
            FileWriter fw = null;
            try {
                fw = new FileWriter(path);
            } catch (IOException e) {
                e.printStackTrace();
            }
            marshaller.marshal(obj, fw);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
    }

    @SuppressWarnings("unchecked")
    /**
     * 将String类型的xml转换成对象
     */
    public static Object convertXmlStrToObject(Class clazz, String xmlStr) {
        Object xmlObject = null;
        try {
            JAXBContext context = JAXBContext.newInstance(clazz);
            // 进行将Xml转成对象的核心接口
            Unmarshaller unmarshaller = context.createUnmarshaller();
            StringReader sr = new StringReader(xmlStr);
            xmlObject = unmarshaller.unmarshal(sr);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return xmlObject;
    }

    @SuppressWarnings("unchecked")
    /**
     * 将file类型的xml转换成对象
     */
    public static Object convertXmlFileToObject(Class clazz, String xmlPath) {
        Object xmlObject = null;
        try {
            JAXBContext context = JAXBContext.newInstance(clazz);
            Unmarshaller unmarshaller = context.createUnmarshaller();
            FileReader fr = null;
            try {
                fr = new FileReader(xmlPath);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            xmlObject = unmarshaller.unmarshal(fr);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return xmlObject;
    }
}


第二步建立对象
package com.demo.beans;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import java.util.Date;

@XmlAccessorType(XmlAccessType.FIELD)
// XML文件中的根标识
@XmlRootElement(name = "User")
// 控制JAXB 绑定类中属性和字段的排序
@XmlType(propOrder = {
        "userId",
        "userName",
        "password",
        "birthday",
        "money"
})
public class User {
    private static final long serialVersionUID = 1L;

    // 用户Id
    private int userId;
    // 用户名
    private String userName;
    // 用户密码
    private String password;
    // 用户生日
    private Date birthday;
    // 用户钱包
    private double money;

}

第三步建立测试xml
  String xml="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> " +
                "<User>" +
                "<userId>1</userId> " +
                "<userName>Steven</userName>" +
                "<password>@sun123</password> " +
                "<birthday>2013-12-13T18:24:03.477+08:00</birthday> " +
                "<money>1000.0</money>" +
                "</User>";
        User user= (User) convertXmlStrToObject(User.class,xml);
        System.out.println(user);



如果对你有帮助请给小弟打赏下,祝你成功。



分享到:
评论

相关推荐

    JAVA对象与XML互转

    本篇将详细探讨这个主题,讲解如何使用Java进行XML与对象的互转。 一、Java对象转XML 1. **JAXB**(Java Architecture for XML Binding):这是Java标准API,用于将Java对象映射到XML文档,反之亦然。使用JAXB,我们...

    java xml和map互转

    在Java编程中,XML(可扩展标记语言)是一种用于存储和传输数据的标准化格式,而Map是Java集合框架中的一个重要接口,它提供了键值对的数据结构。将XML与Map进行互转是常见的需求,特别是在处理配置文件或者进行数据...

    xml和java对象互转

    总结来说,"xml和java对象互转"涉及使用如XStream这样的库来方便地在XML和Java对象之间进行数据转换,这对于在Java应用程序中处理和交换XML数据是至关重要的。通过理解这个过程,开发者可以更高效地管理数据,并实现...

    java list和xml互转例子

    Map对象通常用于存储键值对,键和值可以是任何类型。 - 使用dom4j库,我们可以创建一个Document对象来表示XML文档,Element对象代表XML的元素,Attribute对象代表属性。 - 遍历List,将每个Map转换为Element,Map...

    XML和类对象互转 (java) 并含有测试例子

    本篇将详细阐述如何在Java中实现XML与类对象的互转,以及提供相关的测试示例。 首先,我们需要理解XML的基本概念。XML是一种用于标记数据的语言,它具有自我描述性,可以清晰地组织和表示数据结构。在Java中,我们...

    JavaXml及Bean互转

    本篇将详细介绍两种常用的Java XML与Bean互转方法:XStream库和JAXB(Java Architecture for XML Binding)框架。 一、XStream库 1. **XStream简介**: XStream是一个用于Java的轻量级库,它提供了一种简单的API来...

    java XML和对象的互转

    在Java中,我们可以通过DOM(文档对象模型)、SAX(简单API for XML)和JAXB(Java Architecture for XML Binding)等库来实现XML和对象之间的相互转换。下面我们将详细探讨这些方法。 1. DOM解析器: DOM是XML文档...

    xml和java对象互相转换的两种方法

    在IT行业中,XML(eXtensible Markup Language)和Java对象之间的互转是常见的操作,尤其是在数据交换、配置文件处理和序列化等场景。本文将详细介绍两种主要的XML与Java对象互相转换的方法:DOM(Document Object ...

    JAXB完成XML和Java对象的互转

    该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用...

    JAVA对象与XML相互转化DEMO

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

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

    XStream是一个轻量级、高性能的库,能够将Java对象序列化为XML,同时也能将XML反序列化回Java对象,实现XML和Java对象的互相转换。 首先,我们需要引入XStream库。在给定的描述中提到了两个依赖文件:xstream-1.3.1...

    利用JAXB进行xml和javabean之间转换

    而JAXB(Java Architecture for XML Binding)是Java提供的一种标准API,它允许我们轻松地在Java对象(javabean)和XML文档之间进行转换。通过JAXB,开发者可以避免手动编写XML解析和序列化代码,极大地提高了开发...

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

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

    Marshaller实现Java对象与xml的互转

    Marshaller来实现Java对象与xml的互转的源代码,这是博文中用到的源码,地址:http://blog.csdn.net/y353027520dx/article/details/43446549 大家可以直接下载后运行,一起学习学习。。

    xml与json互转工具类

    通过阅读和学习这些代码,开发者可以了解如何在Java中实现XML和JSON的互转,以及如何优雅地展示JSON数据。 总的来说,XML和JSON互转工具在处理跨平台数据交换、数据存储和格式化显示时起着关键作用。`JsonTest`和`...

    java对象与xml的互相转换

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

    java json xml转换

    - 使用JAXB:Java标准库中的JAXB可以将XML对象绑定到Java类,然后再通过Gson或Jackson转换为JSON。 3. 示例代码: - Jackson示例: ```java ObjectMapper jsonMapper = new ObjectMapper(); ObjectMapper xml...

    使用xstream进行java类与xml文件互转解析--代码

    本教程将深入探讨如何使用XStream进行Java类与XML文件之间的互转解析。 首先,我们需要引入XStream库。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;com.thoughtworks.xstream&lt;/groupId&gt; ...

    Java与xml互转

    Java与XML互转是软件开发中常见的数据交换方式,特别是在集成不同系统或者处理配置文件时。XML因其结构化的特性,可以很好地表示复杂的数据结构。在Java中,通过使用Java Architecture for XML Binding (JAXB) 框架...

    castor :Java与xml互转示例---代码

    本文将深入探讨如何使用Castor在Java和XML之间进行互转,并通过代码示例来阐述其工作原理。 ### 1. Castor简介 Castor是基于Java的,它通过生成Java类来解析XML文档,或者将Java对象转换为XML。它的核心功能包括:...

Global site tag (gtag.js) - Google Analytics