java使用jaxb操作xml示例

Java使用JAXB(Java Architecture for XML Binding)操作XML,可以在Java对象和XML之间进行快速、方便的转换。下面是使用JAXB操作XML的完整攻略。

基础准备

使用JAXB需要按照以下步骤进行准备:

1. 引入JAXB依赖

在Maven项目中,需要在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.3.0.1</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.0.1</version>
</dependency>

2. 构建Java对象

使用JAXB操作XML,需要构建Java类来表示XML根元素以及子元素。可以通过使用@XmlRootElement、@XmlElement等注解将Java类映射为XML节点。

例如,如果有一个Person类,表示一个人的信息:

@XmlRootElement
public class Person {
    private String name;
    private int age;
    private String gender;

    // getter and setter
}

那么在XML中,就可以通过以下方式表示一个Person对象:

<person>
    <name>张三</name>
    <age>20</age>
    <gender>男</gender>
</person>

实现JAXB操作XML

1. 将Java对象转为XML文本

下面是一个将Java对象转为XML文本的示例:

public class JAXBUtil {
    public static String convertToXml(Object obj) throws JAXBException {
        StringWriter writer = new StringWriter();
        Marshaller marshaller = JAXBContext.newInstance(obj.getClass()).createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(obj, writer);
        return writer.toString();
    }
}

该方法将一个Java对象转换为一个XML文本字符串。其中,使用JAXBContext.newInstance()方法创建JAXB上下文,然后就可以使用Marshaller将对象转换为XML文本。在转换过程中,可以设置编码和格式化选项。

例如,如果有一个Person对象:

Person person = new Person();
person.setName("张三");
person.setAge(20);
person.setGender("男");

那么可以使用以下代码将其转换为XML文本:

String xml = JAXBUtil.convertToXml(person);
System.out.println(xml);

输出结果:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person>
    <name>张三</name>
    <age>20</age>
    <gender>男</gender>
</person>

2. 将XML文本转为Java对象

下面是一个将XML文本转为Java对象的示例:

public class JAXBUtil {
    public static <T> T convertToJava(String xml, Class<T> clazz) throws JAXBException {
        Unmarshaller unmarshaller = JAXBContext.newInstance(clazz).createUnmarshaller();
        StringReader reader = new StringReader(xml);
        return (T) unmarshaller.unmarshal(reader);
    }
}

该方法将一个XML文本字符串转换为一个Java对象。其中,使用JAXBContext.newInstance()方法创建JAXB上下文,然后就可以使用Unmarshaller将XML文本转换为Java对象。

例如,如果有以下XML文本:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person>
    <name>张三</name>
    <age>20</age>
    <gender>男</gender>
</person>

那么可以使用以下代码将其转换为Person对象:

Person person = JAXBUtil.convertToJava(xml, Person.class);
System.out.println(person.getName());

输出结果:

张三

示例说明

下面是两个示例,用于说明如何使用JAXB操作XML。

示例1. 将Java对象转换为XML文本

假设有一个Student类,表示一个学生的信息:

@XmlRootElement
public class Student {
    private String name;
    private int age;
    private String gender;
    private String school;

    // getter and setter
}

现在需要将一个Student对象转换为XML文本。可以使用以下代码:

Student student = new Student();
student.setName("李四");
student.setAge(18);
student.setGender("女");
student.setSchool("XX中学");

String xml = JAXBUtil.convertToXml(student);
System.out.println(xml);

输出结果:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<student>
    <name>李四</name>
    <age>18</age>
    <gender>女</gender>
    <school>XX中学</school>
</student>

示例2. 将XML文本转换为Java对象

假设有以下XML文本,表示一个学生的信息:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<student>
    <name>李四</name>
    <age>18</age>
    <gender>女</gender>
    <school>XX中学</school>
</student>

现在需要将该XML文本转换为一个Java对象。可以使用以下代码:

Student student = JAXBUtil.convertToJava(xml, Student.class);
System.out.println(student.getName());

输出结果:

李四

以上就是使用JAXB操作XML的完整攻略,以及两个示例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java使用jaxb操作xml示例 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • Android 创建与解析XML(四)——详解Pull方式

    对于“Android 创建与解析XML(四)——详解Pull方式”这个话题,我会进行以下几方面的讲解: Pull方式解析XML文件的特点和基本原理 Pull解析XML的主要API以及使用方式 Pull方式解析XML的示例详解 1. Pull方式解析XML文件的特点和基本原理 在Android中,解析XML文件主要有三种方式:DOM方式、SAX方式和Pull方…

    html 2023年5月30日
    00
  • 比特币怎么挖矿教程 比特币的挖矿教程详细步骤

    以下是“比特币怎么挖矿教程 比特币的挖矿教程详细步骤”的完整攻略: 比特币怎么挖矿教程 比特币挖矿是指通过计算机运算来验证比特币交易并获得比特币奖励的过程。以下是一些比特币挖矿的详细步骤和攻略。 步骤1:选择比特币挖矿硬件 在进行比特币挖矿之前,需要选择比特币挖矿硬件。以下是一些选择比特币挖矿硬件的方法: 选择ASIC矿机,这是一种专门用于比特币挖矿的硬件设…

    html 2023年5月18日
    00
  • Session过期后自动跳转到登录页面的实例代码

    关于“Session过期后自动跳转到登录页面的实例代码”的实现,您可以按照以下步骤进行: 在程序顶部,引入所需的依赖库: from flask import session, request, redirect, url_for 获取session中用户的登录状态,判断是否已过期: @app.before_request def before_request…

    html 2023年5月31日
    00
  • Mac Mysql数据库中文乱码问题解决

    下面是详细的“Mac Mysql数据库中文乱码问题解决”的攻略: 1. 问题描述 当我们在Mac上使用Mysql数据库时经常会遇到输入中文后乱码的情况,这给我们的工作和学习带来了一定的麻烦。下面是解决这个问题的方法。 2. 解决方法 在Mac上操作Mysql数据库乱码的解决方法有很多,这里介绍两种: 方法一:修改数据库字符集 在数据库连接中加入字符集,则在数…

    html 2023年5月31日
    00
  • PHP 中文乱码解决办法总结分析

    PHP 中文乱码解决办法总结分析 在开发 PHP 程序的过程中,中文乱码是经常遇到的问题之一。出现中文乱码是因为 PHP 的默认字符编码不是 utf-8,而写入到数据库中的字符编码却是 utf-8,以及在浏览器中展示的字符编码也是 utf-8。本文将介绍一些常见的 PHP 中文乱码的解决方法。 方法一:在程序开头处设置编码 在编写 PHP 程序时,可以在开头…

    html 2023年5月31日
    00
  • cfAK-47无影属性测评解析 cf AK-47无影怎么样

    以下是“cfAK-47无影属性测评解析 cf AK-47无影怎么样”的完整攻略: cfAK-47无影属性测评解析 cf AK-47无影怎么样 AK-47无影是CF中的一款武器,以下是对其属性的测评解析: 威力:AK-47无影的威力非常高,可以在短时间内消灭敌人。它的威力比其他步枪高,但比狙击枪低。 精准度:AK-47无影的精准度一般,需要一定的射击技巧才能发…

    html 2023年5月18日
    00
  • javascript解析xml字符串的函数

    这里介绍两种JavaScript解析XML字符串的函数: 使用DOMParser 步骤: 创建一个XML字符串变量 建立一个DOMParser对象 将XML字符串传递给DOMParser对象的parseFromString方法 执行XPath选择器 示例代码: const xmlString = `<bookstore> <book cat…

    html 2023年5月30日
    00
  • xml入门教程:XML是什么-XML/XSLT

    XML入门教程是指帮助初学者了解XML的基础知识和使用方法,以及XML和XSLT的关系和应用。本攻略将提供XML入门教程的完整内容。 1. 什么是XML XML,全称为可扩展标记语言(Extensible Markup Language),是一种用于描述数据的标记语言,与HTML类似。但与HTML不同的是,XML是一种通用的语言,它可以描述任何事物,而不仅仅…

    html 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部