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日

相关文章

  • Spring Boot 整合 Reactor实例详解

    在Spring Boot应用程序中,我们可以使用Reactor来实现响应式编程。以下是实现Spring Boot整合Reactor的完整攻略: 添加依赖 在Spring Boot应用程序中,我们需要添加以下依赖来使用Reactor: <dependency> <groupId>io.projectreactor</groupId…

    Java 2023年5月15日
    00
  • java实现对服务器的自动巡检邮件通知

    下面是“Java实现对服务器的自动巡检邮件通知”的攻略,具体步骤如下: 1. 安装JavaMail API JavaMail API 是Java语言编写的邮件发送和接收的一个API,它支持SMTP、POP3和IMAP协议等,我们需要先下载并安装它。 可以到Oracle官网下载JavaMail API:https://www.oracle.com/java/t…

    Java 2023年6月15日
    00
  • hibernate和mybatis对比分析

    文本格式要求: 标题使用#号表示,#号数量表示标题等级,一级标题一个#号,二级标题二个#号,以此类推 代码块使用三个反引号括起来,并标明代码语言 Hibernate和MyBatis对比分析 什么是Hibernate? Hibernate是一个基于Java的ORM框架,即对象关系映射框架。它可以将Java类映射到关系型数据库中的表,使得Java程序员可以使用面…

    Java 2023年5月19日
    00
  • python、java等哪一门编程语言适合人工智能?

    针对“哪一门编程语言适合人工智能”这个问题,答案并不是非常确定。不同的编程语言和不同的开发环境都有其适用的领域。 Python是人工智能领域的主要语言之一。它拥有成熟且强大的第三方库,例如NumPy、Pandas、Matplotlib和scikit-learn等,在数据处理和分析方面非常出色。同时,Python也有很多用于深度学习的框架,例如TensorFl…

    Java 2023年5月19日
    00
  • 详解Java中static关键字和内部类的使用

    详解Java中static关键字和内部类的使用 Java中的static关键字和内部类是程序设计中非常重要的特性,本文将全面讲解它们的使用。 static关键字 概念 static关键字可以用来修饰类的成员变量和成员方法。 当static关键字被修饰成员变量时,该变量成为静态变量,也可以称为类变量。静态变量的特点是在内存中只有一份,无论有多少个对象被创建,静…

    Java 2023年5月26日
    00
  • JSP自定义标签-标签属性_动力节点Java学院整理

    JSP自定义标签-标签属性 在进行JSP页面开发时,我们经常会遇到需要使用一些自定义的标签来进行页面的处理和数据展示,JSP提供了自定义标签的功能,我们可以通过定义标签来扩展JSP标准标签库中所提供的标签,或者是自定义一些用于当前项目的标签。本篇攻略主要介绍如何在自定义标签中使用标签属性。 标签属性的定义 标签属性可以理解为标签中用于传递参数的占位符,它用于…

    Java 2023年6月15日
    00
  • java中如何使用MD5进行加密

    下面是详细讲解”Java中如何使用MD5进行加密”的完整攻略。 什么是MD5加密 MD5是一种常用的不可逆的加密算法,它能将任意长度的消息压缩到一个固定长度的摘要(通常是128位),并且是一种不可逆的算法。在计算机领域中,MD5常用于对密码、数字签名、消息摘要等信息进行加密。 Java中如何使用MD5进行加密 Java提供了java.security.Mes…

    Java 2023年5月26日
    00
  • H5混合开发手机Web App入门:概念篇

    下面是《H5混合开发手机Web App入门:概念篇》的完整攻略。 概念篇 什么是H5混合开发? H5混合开发是指在原生应用中使用Web技术开发页面和功能,然后通过桥接技术将Web和原生进行互通,实现用户交互和数据传输。这样做的好处是可以借助Web的开发成果和优势,同时享受原生应用的体验和功能。 H5混合开发的优势 更快的开发速度 良好的跨平台适配性 更便捷的…

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