Java解析xml的四种方法汇总

Java解析xml的四种方法汇总

什么是XML

XML(Extensible Markup Language)即可扩展标记语言,是一种标记语言,它可以用来标记电子文件使其具有结构性的标记语言。XML用于存储和传输数据。在XML文档中,标签没有被预定义是一种被使用者自定义的标记语言。

解析XML的四种方法

方法一:使用DOM

DOM是一种基于树形结构的解析器,将XML文件解析成树形结构,然后可以通过节点间的关系以及标签名来访问节点。

下面是一个使用DOM解析形如如下xml文件的例子:

<students>
    <student>
        <name>John</name>
        <age>18</age>
    </student>
    <student>
        <name>Lucy</name>
        <age>19</age>
    </student>
</students>
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

File xmlFile = new File("students.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);
doc.getDocumentElement().normalize();
System.out.println("Root element: " + doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("student");
for (int temp = 0; temp < nList.getLength(); temp++) {
    Node nNode = nList.item(temp);
    System.out.println("\nCurrent Element : "
            + nNode.getNodeName());
    if (nNode.getNodeType() == Node.ELEMENT_NODE) {
        Element eElement = (Element) nNode;
        System.out.println("Name : " 
                + eElement.getElementsByTagName("name").item(0).getTextContent());
        System.out.println("Age : " 
                + eElement.getElementsByTagName("age").item(0).getTextContent());
    }
}

方法二:使用SAX

SAX是一种基于事件驱动的解析器,它遇到XML文件中元素、属性、文字、注释、DTD等事件都会触发相关的事件处理器,通过继承DefaultHandler类定义自己的事件处理器,按事件顺序解析文件,并执行相应操作。

下面是一个使用SAX解析形如上文的xml文件的例子:

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;
import org.xml.sax.XMLReader;

File xmlFile = new File("students.xml");
XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(new DefaultHandler() {
    boolean bname = false;
    boolean bage = false;
    public void startElement(String uri, String localName, String qName, Attributes attributes)
            throws SAXException {
        if (qName.equalsIgnoreCase("name")) {
            bname = true;
        } else if (qName.equalsIgnoreCase("age")) {
            bage = true;
        }
    }
    public void characters(char ch[], int start, int length) throws SAXException {
        if (bname) {
            System.out.println("Name: " + new String(ch, start, length));
            bname = false;
        } else if (bage) {
            System.out.println("Age: " + new String(ch, start, length));
            bage = false;
        }
    }
});
reader.parse(xmlFile.getAbsolutePath());

方法三:使用JDOM

JDOM是一种Java专用的XML解析器,它构建了一个Java的文档对象模型(DOM),兼具DOM、SAX的优点。

下面是一个使用JDOM解析形如上文的xml文件的例子:

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;

File xmlFile = new File("students.xml");
SAXBuilder builder = new SAXBuilder();
Document document = builder.build(xmlFile);
Element rootNode = document.getRootElement();
List<Element> students = rootNode.getChildren("student");
for (Element student : students) {
    System.out.println("Name: " + student.getChildText("name"));
    System.out.println("Age: " + student.getChildText("age"));
}

方法四:使用DOM4J

DOM4J是一个Java的DOM/XML解析器,可以直接获取XPath表达式内容,它内置了JAXP中的XPath引擎,在解析XML时有着更好的表现。

下面是一个使用DOM4J解析形如上文的xml文件的例子:

import java.io.File;
import java.util.List;

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

File xmlFile = new File("students.xml");
SAXReader reader = new SAXReader();
Document document = reader.read(xmlFile);
List<Node> nodes = document.selectNodes("//student");
for (Node node : nodes) {
    Element student = (Element) node;
    System.out.println("Name: " + student.elementText("name"));
    System.out.println("Age: " + student.elementText("age"));
}

小结

本文介绍了Java解析XML的四种方法,分别是使用DOM、SAX、JDOM和DOM4J。通过这四种方式,可以根据具体需求选择使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java解析xml的四种方法汇总 - Python技术站

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

相关文章

  • 解决phpmyadmin中文乱码问题。。。

    解决phpMyAdmin中文乱码问题的攻略如下: 问题描述 当我们在phpMyAdmin中输入中文字符时,有时会出现乱码的情况。这是因为phpMyAdmin默认的字符集与数据库中的字符集不一致所导致的。 解决方案 方案一:修改phpMyAdmin的默认编码 打开phpMyAdmin的配置文件config.inc.php,一般位于/etc/phpmyadmin…

    html 2023年5月31日
    00
  • C#采用OpenXml实现给word文档添加文字

    添加文字到Word文档,可以使用C#语言中开放式XML(OpenXml)SDK,这是一种用于处理Office文档的开源库。 下面是使用OpenXml创建并添加文本到Word文档的完整攻略: 准备开发环境 首先需要在电脑上安装Visual Studio开发工具和OpenXml SDK。Visual Studio可以访问官网下载并安装,而OpenXml SDK可…

    html 2023年5月30日
    00
  • 微信怎么设置添加我的方式 微信设置添加我的方式技巧

    以下是“微信怎么设置添加我的方式 微信设置添加我的方式技巧”的完整攻略: 微信怎么设置添加我的方式? 在微信中,可以通过以下方法设置添加我的方式: 进入“我”的页面:在微信主界面中,点击右下角的“我”按钮,进入“我”的页面。 进入“个人信息”页面:在“我”的页面中,点击头像或者昵称,进入“个人信息”页面。 进入“添加我的方式”页面:在“个人信息”页面中,点击…

    html 2023年5月18日
    00
  • .net读写xml文档详解

    .NET读写XML文档详解 什么是XML文档 XML(Extensible Markup Language)是一种用于描述数据的标记语言。它可以定义各种自定义标记,用途非常广泛,与HTML不同,XML没有预定义的标记。 XML文档是一种可扩展的文本格式,可以支持从简单的数值,到复杂的结构数据存储。XML不仅可以用于数据交换,也可以用来表示数据结构。 .NET…

    html 2023年5月30日
    00
  • js操作XML文件的实现方法兼容IE与FireFox

    下面详细讲解如何使用JavaScript操作XML文件并兼容IE与Firefox。 1. 什么是XML文件? XML(Extensible Markup Language)是一种被设计用来传输和存储数据的标记语言。与HTML相比,XML更加灵活和自由,可以自定义标记,用来描述非常复杂的数据结构和内容。 2. 如何使用JavaScript操作XML文件 要使用…

    html 2023年5月30日
    00
  • HTML5 常用语法一览(列举不支持的属性)

    HTML5常用语法一览 概述 HTML5是一种基于XML的标记语言,用于创建和呈现结构化内容在互联网上的网页。本文将列举HTML5中常用的语法和不支持的属性。 常用语法 文档声明 HTML5文档申明如下: <!DOCTYPE html> 标题 HTML5中,标题通过<h1>~<h6>标签表示: <h1>这是HT…

    html 2023年5月30日
    00
  • 利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位

    获取地理位置和在 Google Map 上进行定位,是 Web 开发中一个常见的需求。本文将介绍如何利用 HTML5 中的 Geolocation API 获取地理位置,然后调用 Google Map API 在地图上进行定位。 获取地理位置 HTML5 中内置了 Geolocation API,可以通过 JavaScript 代码来获取当前设备的地理位置。…

    html 2023年5月30日
    00
  • C#对XML文件的各种操作实现方法

    C#对XML文件的操作可以使用.NET Framework提供的System.Xml命名空间中的类库实现。以下是实现XML文件操作的一些常用方法: 1. 创建XML文档 使用XmlDocument类可以创建一个XML文档对象,然后可以添加根元素和各种类型的元素、属性和内容。以下是示例代码: XmlDocument doc = new XmlDocument(…

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