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

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 binarysearch方法原理详解

    Java binarySearch方法原理详解 什么是binarySearch方法 binarySearch方法是Java Util API提供的的一个静态方法,用于在有序数组中二分查找指定的值。 binarySearch方法原理 binarySearch方法实际上是对比给定值与数组中间值的大小,如果给定值小于中间值,则继续在左半部分递归查找;如果大于,则在…

    Java 2023年5月26日
    00
  • SSH框架网上商城项目第16战之Hibernate二级缓存处理首页热门显示

    首先对于这个攻略的标题,我们可以进行分析理解。 “SSH框架网上商城项目”:这个部分是指网上商城项目所使用的技术框架或开发方式,其中SSH框架通常指的是Spring + Struts2 + Hibernate。 “第16战”:这个部分是指在整个项目中,这是第16个完成的模块或任务。 “Hibernate二级缓存处理”:这个部分是指在这个模块中,我们要讲解的是…

    Java 2023年5月20日
    00
  • mybatis入门_动力节点Java学院整理

    MyBatis入门:动力节点Java学院整理 本文将向读者介绍如何快速入门MyBatis框架,并提供相关学习资源和示例代码,希望对初学者有所帮助。 MyBatis框架简介 MyBatis是一款流行的ORM框架,可以与各种主流的数据库进行集成,例如MySQL、Oracle、SQLServer等。它的主要特点是将SQL语句与Java代码分离,使用XML描述SQL…

    Java 2023年5月19日
    00
  • Java 自定义Spring框架与核心功能详解

    Java自定义Spring框架与核心功能详解 什么是Spring框架? Spring框架是Java企业级应用开发的常用框架,它提供了一系列的功能和工具,包括依赖注入(DI)、面向切面编程(AOP)、MVC等。Spring框架的核心功能是IOC容器和AOP框架。通过对Spring框架的深入学习和使用,我们可以更加高效地进行Java企业级应用开发。 Spring…

    Java 2023年5月19日
    00
  • Idea开发工具之SpringBoot整合JSP的过程

    接下来我会详细讲解在Idea开发工具中如何整合SpringBoot和JSP。 准备工作 在开始之前,确保你已经完成以下准备工作: 安装了JDK和Idea开发工具。 创建一个SpringBoot项目。 确保pom.xml中已经添加了对于Spring Web和Tomcat的依赖。 整合JSP 第一步:在pom.xml中添加依赖 在pom.xml中添加以下依赖: …

    Java 2023年6月15日
    00
  • 微信小程序中weui用法解析

    微信小程序中weui用法解析 什么是weui WeUI 是微信官方推出的一个基于Vue.js和Webpack构建的一套移动端UI组件库,适用于微信内网页开发和微信小程序开发。WeUI拥有丰富的UI组件,涉及常用的表单、列表、卡片、操作反馈等等。使用WeUI可以极大地提高小程序的开发效率和用户体验,帮助开发人员快速地开发出适应微信生态的小程序。 在微信小程序中…

    Java 2023年5月30日
    00
  • SpringMVC+Shiro的基本使用及功能介绍

    SpringMVC+Shiro的基本使用及功能介绍 什么是Shiro Shiro是一个强大且易于使用的Java安全框架,它提供了身份验证、授权、加密、会话管理等功能,可以帮助我们快速构建安全的Web应用程序。 SpringMVC集成Shiro SpringMVC集成Shiro可以帮助我们快速构建安全的Web应用程序。以下是SpringMVC集成Shiro的基…

    Java 2023年5月17日
    00
  • Spring Security学习笔记(一)

    下面是对”Spring Security学习笔记(一)”的详细讲解: 简介 本文主要介绍了Spring Security框架的一些基础知识以及相关概念的解释。包括权限认证、授权、角色、资源等内容。文章采用了markdown格式,图文并茂,易于理解。 Spring Security简介 Spring Security是Spring框架的一个子项目,主要处理基于…

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