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对象的属性值。

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

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

相关文章

  • JSP是什么?JSP是什么意思?

    JSP(JavaServer Pages)是Java技术中的一项Web技术,它以标记语言为主、Java脚本语言为辅,让开发人员可以在HTML网页内插入Java程序代码及特定标记语句,以生成动态的Web页面。 在一般的Web应用中,由于HTML是静态的,无法根据用户的不同请求来动态地改变页面内容,这时就需要用到JSP来实现动态页面的生成。在JSP中,HTML代…

    Java 2023年6月15日
    00
  • MySQL实现JDBC详细步骤

    下面我们详细讲解一下“MySQL实现JDBC详细步骤”的完整攻略。 什么是JDBC? JDBC是Java语言中访问关系型数据库的应用程序接口,作为Oracle公司为开发者提供的数据库访问技术之一,主要用于在Java应用程序中进行数据库操作,同时也可以与其他编程语言进行协作。 MySQL实现JDBC详细步骤 下面将为大家详细介绍如何使用MySQL实现JDBC。…

    Java 2023年5月19日
    00
  • Spring Boot FeignClient 如何捕获业务异常信息

    Spring Boot是基于Spring框架的快速开发微服务的框架。FeignClient是Spring Cloud中常用的声明式Http客户端,可以实现服务之间的调用。在开发过程中,可能会发生业务异常,通过捕获异常信息可以更好地进行问题排查和解决。本文将详细讲解Spring Boot FeignClient如何捕获业务异常信息的完整攻略。 1. Feign…

    Java 2023年5月27日
    00
  • JS注释所产生的bug 即使注释也会执行

    JS注释所产生的bug是指在一些情况下,即使代码中存在注释,这些注释也会被执行而导致程序出现问题。 该问题主要是因为在一些JS引擎中,被注释的代码可能在编译阶段和解析阶段都会被执行,因此如果注释中包含了有效的代码,则这些代码会被直接执行。这就引起了一定的安全隐患,也可能导致代码出现逻辑错误。 下面通过两个示例来说明该问题: 示例一: function tes…

    Java 2023年6月15日
    00
  • Spring中如何操作JDBC的实现

    Spring中操作JDBC主要有以下三种方式: 使用JdbcTemplate或NamedParameterJdbcTemplate 实现JdbcOperations接口 使用SimpleJdbcInsert或SimpleJdbcCall 下面对每种方式进行详细的讲解。 1. 使用JdbcTemplate或NamedParameterJdbcTemplate …

    Java 2023年5月20日
    00
  • Java布局管理器使用方法

    下面是“Java布局管理器使用方法”的完整攻略,包括两条示例说明。 什么是布局管理器 在Java图形用户界面(GUI)开发中,布局管理器是用于自动排列和调整GUI组件位置的工具。如果你不使用布局管理器,在不同的屏幕上可能会出现组件重叠的情况,布局管理器可以很好地解决这个问题。 Java提供了几种不同的布局管理器,每一种都有其独特的特点和适用场景。下面我们将详…

    Java 2023年6月15日
    00
  • Java基础篇_有关接口和抽象类的几道练习题(分享)

    这里是Java基础篇_有关接口和抽象类的几道练习题(分享)的完整攻略。 一、介绍 该篇文章主要介绍了Java中接口和抽象类的使用方法及练习题。通过练习题的实例,让读者更好的掌握接口和抽象类的编写方法和应用场景。 二、接口 1. 接口的定义 接口是一个抽象的概念,是一组方法的集合。在Java中,接口的定义使用关键字interface来表示。 public in…

    Java 2023年5月26日
    00
  • Mybatis Plus 代码生成器的实现

    MyBatis Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上新增了很多实用的功能,其中的代码生成器可以帮助我们快速生成基础的代码,提升开发效率。 MyBatis Plus 代码生成器是通过配置数据库连接信息、配置表、配置输出路径等,生成对应的 Java 代码,包括实体类、DAO 接口、以及对应的 XML 映射文件,同时也支持生成 C…

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