IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> XML使用总结(一) -> 正文阅读

[Java知识库]XML使用总结(一)

前言:日常开发过程中,经常会遇到需要将Java对象转XML或者将XMLJava对象,本篇是作者总结日常研发过程中Java与XML相互转换的方法,仅供参考。

一、Java封装的XML API

JAXB(Java Architecture for XML Binding简称JAXB):允许Java开发人员将Java类映射为XML表示方式。JAXB提供两种主要特性:将一个Java对象序列化为XML,以及反向操作,将XML解析成Java对象。换句话说,JAXB允许以XML格式存储和读取数据,而不需要程序的类结构实现特定的读取XML和保存XML的代码。——摘自 OSChina《JAXB Java 的 XML 开发包》

  1. 编写XML工具类

    import javax.xml.bind.JAXBContext;
    import javax.xml.bind.JAXBException;
    import javax.xml.bind.Marshaller;
    import javax.xml.bind.Unmarshaller;
    import java.io.StringReader;
    import java.io.StringWriter;
    
    public class XMLUtils {
    
        public static <T> String beanToXmlStr(T bean, String charset) throws JAXBException {
            JAXBContext jaxbContext = JAXBContext.newInstance(bean.getClass());
            Marshaller marshaller = jaxbContext.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_ENCODING, charset);
            StringWriter writer = new StringWriter();
            marshaller.marshal(bean, writer);
            return writer.toString();
        }
    
        public static <T> T xmlStrToBean(String xml, Class<T> clazz) throws JAXBException {
            JAXBContext jaxbContextResp = JAXBContext.newInstance(clazz);
            Unmarshaller unmarshaller = jaxbContextResp.createUnmarshaller();
            StringReader reader = new StringReader(xml);
            return (T) unmarshaller.unmarshal(reader);
        }
    
    }
    
  2. 编写Java Bean

    import lombok.Data;
    
    import javax.xml.bind.annotation.XmlAccessType;
    import javax.xml.bind.annotation.XmlAccessorType;
    import javax.xml.bind.annotation.XmlElement;
    import javax.xml.bind.annotation.XmlRootElement;
    
    @Data
    @XmlRootElement(name = "Person")
    @XmlAccessorType(XmlAccessType.FIELD)
    public class Person {
        @XmlElement(name = "Name")
        private String name;
        @XmlElement(name = "Age")
        private Integer age;
    }
    
  3. 测试

    import com.test.bean.Person;
    import org.junit.Test;
    
    import javax.xml.bind.JAXBException;
    
    public class TestXml {
        @Test
        public void test() throws JAXBException {
            // bean转xml字符串
            Person person = new Person();
            person.setName("Tom");
            person.setAge(20);
            String xmlStr = XMLUtils.beanToXmlStr(person, "UTF-8");
            System.out.println(xmlStr);
    
            // xml转bean
            Person person2 = XMLUtils.xmlStrToBean(xmlStr, Person.class);
            System.out.println(person2);
        }
    }
    
  4. 运行结果截图
    在这里插入图片描述

  5. 详细资料请查阅:
    JAXB教程–入门
    JAXB Java 的 XML 开发包

二、XStream

XStream是一个Java对象和XML相互转换的工具,很好很强大。提供了所有的基础类型、数组、集合等类型直接转换的支持。因此XML常用于数据交换、对象序列化。——摘自 OSChina《XStream XML 操作类库》

  1. 导入依赖
    <dependency>
      <groupId>com.thoughtworks.xstream</groupId>
      <artifactId>xstream</artifactId>
      <version>1.4.9</version>
    </dependency>
    <!-- lombok -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.2</version>
    </dependency>
    
  2. 编写XStream工具类
    import com.thoughtworks.xstream.XStream;
    import com.thoughtworks.xstream.io.naming.NoNameCoder;
    import com.thoughtworks.xstream.io.xml.DomDriver;
    
    public class XStreamUtil {
    
        public static <T> T xmlStrToBean(String xml, Class<T> clazz) {
            XStream stream = new XStream(new DomDriver("UTF-8", new NoNameCoder()));
            stream.processAnnotations(clazz);
            stream.autodetectAnnotations(true);
            return (T) stream.fromXML(xml);
        }
    
        public static <T> String beanToXmlStr(T bean) {
            XStream stream = new XStream(new DomDriver("UTF-8", new NoNameCoder()));
            stream.autodetectAnnotations(true);
            return stream.toXML(bean);
        }
    
    }
    
  3. 编写Java Bean
    import com.thoughtworks.xstream.annotations.XStreamAlias;
    import lombok.Getter;
    import lombok.Setter;
    import lombok.ToString;
    
    import java.util.Date;
    
    @Getter
    @Setter
    @ToString
    @XStreamAlias("Student")
    public class Student {
        @XStreamAlias("Name")
        private String name;
    
        @XStreamAlias("Sex")
        private String sex;
    
        @XStreamAlias("Age")
        private String age;
    
        @XStreamAlias("NickName")
        private String nickName;
    
        @XStreamAlias("IsSuccess")
        private Boolean isSuccess;
    
        @XStreamAlias("BirthDay")
        private Date birthDay;
    }
    
  4. 编写测试方法
    
    public class TestXStream {
    	@Test
    	public void test() {
    		String xmlStr = "<Student>\n" +
                "    <Name>mingo</Name>\n" +
                "    <Sex>男</Sex>\n" +
                "    <NickName>luffy</NickName>\n" +
                "    <IsSuccess>true</IsSuccess>\n" +
                "    <BirthDay>1991-12-01 00:00:00</BirthDay>\n" +
                "</Student>";
            Student student = XStreamUtil.xmlStrToBean(xmlStr, Student.class);
            System.out.println(student);
    
    		String str = XStreamUtil.beanToXmlStr(student);
    		System.out.println(str);
    	}
    
    }
    
  5. 运行结果截图
    在这里插入图片描述
  6. 详细资料请查阅:XStream XML 操作类库
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章           查看所有文章
加:2021-11-04 13:40:28  更:2021-11-04 13:40:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/27 10:19:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码