Java解析XML格式数据的方法详解

yizhihongxing

Java解析XML格式数据的方法详解

1. 使用Java标准库的XML解析器

Java标准库提供了解析XML格式数据的支持。以下是解析XML格式数据的步骤:

  1. 生成一个XML解析器对象,可以使用DocumentBuilderFactoryDocumentBuilder两个类完成。
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
  1. 读取XML文件,可以使用FileDocument两个类完成,其中File类可以读取本地文件,Document类可以读取XML文件。
File xmlFile = new File("data.xml");
Document document = db.parse(xmlFile);
  1. 通过Element类获取XML文档的根节点,并通过递归遍历获取其子节点。
Element root = document.getDocumentElement();
NodeList nodeList = root.getChildNodes();

for (int i = 0; i < nodeList.getLength(); ++i) {
    Node node = nodeList.item(i);
    if (node.getNodeType() == Node.ELEMENT_NODE) {
        Element element = (Element) node;
        System.out.println(element.getNodeName() + ": " + element.getTextContent());
    }
}

2. 使用第三方库XStream解析XML格式数据

XStream是一个基于Java语言的XML序列化和反序列化框架。以下是解析XML格式数据的步骤:

  1. 添加XStream依赖库到项目中。
<dependency>
    <groupId>com.thoughtworks.xstream</groupId>
    <artifactId>xstream</artifactId>
    <version>1.4.16</version>
</dependency>
  1. 创建XStream对象。
XStream xstream = new XStream();
  1. 将XML数据转换为Java对象。
String xmlString = "<data><name>Tom</name><age>20</age></data>";
Data data = (Data) xstream.fromXML(xmlString);

其中,Data是一个Java类,其属性和XML节点名要一一对应。

public class Data {
    private String name;
    private int age;

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

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

    // getters and setters
}

示例一:使用Java标准库解析XML格式数据

以下是一个XML格式数据:

<?xml version="1.0" encoding="UTF-8"?>
<students>
    <student>
        <name>Tom</name>
        <gender>male</gender>
        <age>20</age>
        <major>Computer Science</major>
    </student>
    <student>
        <name>Lily</name>
        <gender>female</gender>
        <age>19</age>
        <major>Mathematics</major>
    </student>
</students>

以下是Java代码,使用Java标准库解析XML格式数据并打印出每个学生的信息:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class XMLParser {
    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();

        Document document = db.parse("students.xml");
        Element root = document.getDocumentElement();
        NodeList nodeList = root.getChildNodes();

        for (int i = 0; i < nodeList.getLength(); ++i) {
            Node node = nodeList.item(i);
            if (node.getNodeType() == Node.ELEMENT_NODE && node.getNodeName().equals("student")) {
                Element student = (Element) node;
                System.out.println("Name: " + student.getElementsByTagName("name").item(0).getTextContent());
                System.out.println("Gender: " + student.getElementsByTagName("gender").item(0).getTextContent());
                System.out.println("Age: " + student.getElementsByTagName("age").item(0).getTextContent());
                System.out.println("Major: " + student.getElementsByTagName("major").item(0).getTextContent());
                System.out.println();
            }
        }
    }
}

示例二:使用XStream解析XML格式数据

以下是一个XML格式数据:

<data>
    <name>Tom</name>
    <age>20</age>
</data>

以下是Java代码,使用XStream解析XML格式数据并将其转换为Java对象:

import com.thoughtworks.xstream.XStream;

public class XMLParser {
    public static void main(String[] args) throws Exception {
        XStream xstream = new XStream();
        String xmlString = "<data><name>Tom</name><age>20</age></data>";
        Data data = (Data) xstream.fromXML(xmlString);
        System.out.println("Name: " + data.getName());
        System.out.println("Age: " + data.getAge());
    }
}

class Data {
    private String name;
    private int age;

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

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java解析XML格式数据的方法详解 - Python技术站

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

相关文章

  • Java修改maven的默认jdk版本为1.7的方法

    好的。首先需要说明的是,如果你想在Java中使用Maven来构建项目,那么需要确保正确的JDK版本。Java 7对应的JDK版本为1.7.x。而Maven在安装过程中会自动检查系统中已安装的JDK版本,然后默认使用最高版本的JDK,这样就会导致使用Java 7的项目运行时出现问题。下面提供两种方法来修改Maven的默认JDK版本为1.7。 方法一:在Mave…

    Java 2023年5月20日
    00
  • 简单讲解java中throws与throw的区别

    简单讲解java中throws与throw的区别 在Java中,throw和throws关键字经常用到,尤其在异常处理方面。虽然它们的名称相似,但它们却有着截然不同的作用。下面,我们将用清晰易懂的方式详细讲解这两个关键字的区别。 throw throw关键字用于抛出一个异常,用来通知调用方法的代码,指明了出现了问题,并且在遇到无法处理的异常时将它传递给调用者…

    Java 2023年5月25日
    00
  • Hibernate懒加载之标签上的lazy

    Hibernate是一个流行的开源ORM(对象关系映射)框架,可以将Java对象关联到数据库表。在开发中,为了提高系统性能,开发人员通常会使用懒加载技术,延迟加载需要的数据,而不是在一次完整的数据库查询中同时加载完所有的数据。 在Hibernate中,懒加载的配置是通过在Hibernate映射文件中的标签上添加lazy属性实现的。接下来,我们将详细讲解如何在…

    Java 2023年5月20日
    00
  • SpringBoot配置外部静态资源映射问题

    在Spring Boot中,我们可以使用@ConfigurationProperties注解来配置应用程序的属性。在这些属性中,有一个非常重要的属性是spring.resources.static-locations,它用于指定应用程序的静态资源目录。本文将详细讲解如何配置Spring Boot的静态资源映射。 步骤一:添加静态资源 我们需要在应用程序的sr…

    Java 2023年5月15日
    00
  • 基于Spring中各个jar包的作用及依赖(详解)

    下面是“基于Spring中各个jar包的作用及依赖(详解)”的攻略: 1. Spring的常用jar包 Spring框架的常用jar包包括以下几个: spring-core:Spring框架的核心,提供了依赖注入(DI)和控制反转(IoC)的基本支持。 spring-beans:Spring框架的Bean工厂及其配置工具,用于创建和管理Bean对象。 spr…

    Java 2023年5月19日
    00
  • Java开发druid数据连接池maven方式简易配置流程示例

    如您所说,本人将为您提供Java开发druid数据连接池maven方式简易配置流程示例的完整攻略。 一、引入druid连接池的maven依赖 首先,在Java项目的pom.xml文件中引入druid连接池的maven依赖。示例如下: <dependency> <groupId>com.alibaba</groupId> &…

    Java 2023年5月20日
    00
  • Android Studio 一键生成Json实体类教程

    下面是详细的“Android Studio 一键生成Json实体类教程”的攻略: 1. 前言 在进行Android开发中,我们经常需要将从后台接口获取到的Json数据转化为实体类进行处理。手动创建实体类费时费力,尤其是在Json数据结构较为复杂的情况下。幸好,现在Android Studio提供了一个非常实用的插件,可以通过一键快速生成Json对应的实体类,…

    Java 2023年5月26日
    00
  • 教你构建第一个Java Applet程序

    教你构建第一个Java Applet程序 Java Applet是一种基于Java语言的浏览器插件技术,可以通过在网页中嵌入Java Applet来实现丰富的交互效果和动态功能。本文将从零开始,为你介绍如何构建你的第一个Java Applet程序。 准备工作 安装JDK开发环境,确保你的计算机上已经安装Java SE Development Kit,这是Ja…

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