Java解析xml文件和json转换的方法(DOM4j解析)

Java解析XML文件和JSON转换的方法(DOM4j解析)

在Java编程中,经常需要解析XML文件或者将JSON字符串转换成Java对象。针对这个问题,我们可以使用DOM4j解析库来处理。下面是详细的使用方法:

解析XML文件

引入依赖库

首先,需要在项目中引入dom4j和jaxen这两个依赖库。在Maven项目中,可以在项目的pom.xml文件中添加以下依赖:

<dependency>
    <groupId>dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>1.6.1</version>
</dependency>
<dependency>
    <groupId>jaxen</groupId>
    <artifactId>jaxen</artifactId>
    <version>1.1-beta-6</version>
</dependency>

读取XML文件

下面是一个简单的示例代码,用于读取XML文件并解析其中的内容。

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.File;

public class ReadXMLFile {
    public static void main(String[] args) {
        File inputFile = new File("input.xml");
        SAXReader reader = new SAXReader();
        try {
            Document document = reader.read(inputFile);
            Element root = document.getRootElement();

            // 遍历根节点下的所有子节点
            for (Iterator<Element> it = root.elementIterator(); it.hasNext(); ) {
                Element element = it.next();

                // 输出节点的名称和文本内容
                System.out.println(element.getName() + ":" + element.getText());
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
}

在本示例中,我们首先创建了一个File对象表示输入的XML文件。然后创建一个SAXReader对象,并使用read()方法读取XML文件并转换成一个Document对象。接着,我们获取根节点Element对象,通过遍历根节点的所有子节点,输出节点的名称和文本内容。

创建XML文件

下面是一个示例代码,用于创建XML文件并添加节点。

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class CreateXMLFile {
    public static void main(String[] args) {
        Document document = DocumentHelper.createDocument();

        Element company = document.addElement("company");
        company.addAttribute("name", "ABC Company");

        Element department = company.addElement("department");
        department.addAttribute("name", "IT Department");

        Element employee1 = department.addElement("employee");
        employee1.addAttribute("id", "1001");
        employee1.addElement("name").setText("Tom");
        employee1.addElement("age").setText("25");

        Element employee2 = department.addElement("employee");
        employee2.addAttribute("id", "1002");
        employee2.addElement("name").setText("Jerry");
        employee2.addElement("age").setText("28");

        try {
            XMLWriter writer = new XMLWriter(new FileWriter(new File("output.xml")), OutputFormat.createPrettyPrint());
            writer.write(document);
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在本示例中,我们首先创建一个Document对象,然后向其添加根节点和子节点及其属性。最后,我们创建一个XMLWriter对象,将Document对象写入到一个文件中。

JSON转换

以下是一个JSON字符串:

{
    "name": "Jack",
    "age": 24,
    "sex": "male",
    "hobbies": ["reading", "swimming", "traveling"],
    "address": {
        "city": "Shanghai",
        "street": "Xujiahui Road"
    }
}

我们可以将其转换成一个Java对象,代码如下:

import com.alibaba.fastjson.JSON;

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

public class ConvertJSONToJava {
    public static void main(String[] args) {
        String jsonStr = "{\"name\":\"Jack\",\"age\":24,\"sex\":\"male\",\"hobbies\":[\"reading\",\"swimming\",\"traveling\"],\"address\":{\"city\":\"Shanghai\",\"street\":\"Xujiahui Road\"}}";
        User user = JSON.parseObject(jsonStr, User.class);
        System.out.println(user.getName() + "," + user.getAge() + "," + user.getSex());
        System.out.println("Hobbies:");
        List<String> hobbies = user.getHobbies();
        for (String hobby : hobbies) {
            System.out.println(hobby);
        }
        Address address = user.getAddress();
        System.out.println("Address:");
        System.out.println(address.getCity() + "," + address.getStreet());
    }
}

class User {
    private String name;
    private int age;
    private String sex;
    private List<String> hobbies = new ArrayList<>();
    private Address address;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public List<String> getHobbies() {
        return hobbies;
    }

    public void setHobbies(List<String> hobbies) {
        this.hobbies = hobbies;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }
}

class Address {
    private String city;
    private String street;

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }
}

在本示例中,我们首先定义了一个Java类User和一个内部类Address,用于描述JSON字符串中的数据结构。然后,我们使用FastJson库的JSON.parseObject()方法将JSON字符串转换成User对象。最后,我们输出User对象的属性值。

阅读剩余 78%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java解析xml文件和json转换的方法(DOM4j解析) - Python技术站

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

相关文章

  • 什么是Java动态代理?

    Java动态代理是Java语言的一种特性,通过使用动态代理技术可以在运行时创建代理类对象。这种代理机制常被用于AOP(面向切面编程)技术中。动态代理可以更加灵活地实现对目标对象的代理,无需显式地写出代理类。 Java动态代理的主要作用是在不修改原始类源代码的情况下为其创建代理类。该代理类可以通过在原始类方法的前后进行一些处理,来达到在原始类方法调用前后进行一…

    Java 2023年5月10日
    00
  • Spring Boot jpa Service层代码实例

    下面我将详细讲解“Spring Boot jpa Service层代码实例”的完整攻略。 什么是Spring Boot jpa Service层 Spring Boot是一个快速开发的框架,它可以轻松地构建基于Spring框架的Web应用程序。而JPA(Java Persistence API)是一种Java EE标准API,用于管理Java对象到关系数据库…

    Java 2023年5月20日
    00
  • 大家在抢红包,程序员在研究红包算法

    让我来详细讲解一下「大家在抢红包,程序员在研究红包算法」这一话题。 首先,我们需要了解什么是「红包算法」。简单来说,红包算法就是计算如何分配一定数量的金额到多个红包里面,让每个红包的金额尽可能地公平分配。红包算法有很多种,比如「平均法」、「随机法」、「二倍均值法」等等。 接下来,我们先介绍一下「平均法」,因为这是最简单的红包算法之一。平均法的算法逻辑非常简单…

    Java 2023年5月26日
    00
  • JSP入门之HelloWorld程序实例

    JSP入门之HelloWorld程序实例 简介 JSP(Java Server Pages)是一种动态网页开发技术,可以将Java代码嵌入到HTML页面中,动态生成HTML页面。 HelloWorld程序是最简单的JSP程序,通常作为起步项目,通过实现它可以快速体验JSP的开发过程。 下面是一个简单的HelloWorld程序实例。 示例1 创建一个名为ind…

    Java 2023年6月15日
    00
  • 详解SpringBoot中的参数校验(项目实战)

    详解SpringBoot中的参数校验(项目实战) 在Spring Boot中,参数校验是一个非常重要的功能,它可以帮助我们在接口层面对请求参数进行校验,避免了一些不必要的错误和异常。本文将详细讲解Spring Boot中的参数校验功能,包括以下内容: 参数校验的基本概念 Spring Boot中的参数校验实现方法 示例一:使用注解方式进行参数校验 示例二:使…

    Java 2023年5月15日
    00
  • 减少代码开发工作的Java库lombok及注解的使用学习

    这里是使用Lombok库和注解以减少Java代码开发工作的完整攻略: 1. 什么是Lombok库? Lombok是一个Java库,可以通过注解简化开发人员的代码编写量,减少样板代码的重复,从而提高代码的可读性和可维护性。使用Lombok,开发人员可以通过注解的方式自动生成getter和setter方法、构造器、日志、equals、HashCode和toStr…

    Java 2023年5月23日
    00
  • 三种Web开发主流技术的性价评价

    接下来我将详细讲解三种Web开发主流技术的性价评价,希望能对您有所帮助。 一、HTML/CSS/JavaScript 性价比评价 HTML、CSS和JavaScript是Web开发中必不可少的三种技术,合称为前端技术。HTML用于网页结构的编写,CSS用于网页样式的设置,JavaScript用于网页交互和动态效果的实现。这三种技术在Web开发中有着广泛的应用…

    Java 2023年6月15日
    00
  • 使用IDEA配置tomcat及创建JSP文件的方法

    下面是详细的步骤以及示例说明。 配置Tomcat 下载Tomcat:首先需要从官网下载Tomcat的压缩包,选择对应的版本并下载。 解压Tomcat:下载完成后,解压压缩包至一个合适的目录下,比如 /usr/local/tomcat。 配置Tomcat的环境变量:在终端中输入以下命令来进行环境变量的配置。 shell export CATALINA_HOME…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部