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日

相关文章

  • springtomize2怎么用 springtomize2教程及功能详细介绍(附springtomize2下载)

    以下是Springtomize2的使用攻略: 下载安装Springtomize2:您可以在Cydia应用商店中搜索并下载Springtomize2。安装完成后,重新启动设备。 打开Springtomize2:在设备重新启动后,打开Springtomize2应用。 选择要修改的选项:在Springtomize2应用中,您可以选择要修改的选项,例如图标大小、字体…

    html 2023年5月17日
    00
  • powerbuilder(pb)中 xml的应用一例

    下面我来详细讲解一下“PowerBuilder(PB)中XML的应用一例”的完整攻略,包含以下步骤和两个示例说明: 步骤1:了解XML的基础概念 XML是可扩展标记语言(Extensible Markup Language)的缩写,它是一种用于描述数据的标记语言。XML的主要作用是作为数据传输和数据存储的中间格式,并且XML数据可以用各种编程语言进行解析和处…

    html 2023年5月30日
    00
  • HTML常用格式标签_动力节点Java学院整理

    HTML常用格式标签攻略 概述 HTML(Hypertext Markup Language)是一种标记语言,被用于创建网页和其他可在浏览器中展示的信息。HTML 使用标签来描述网页的各个部分。在 HTML 中,标签是用尖括号表达的。常用格式标签是在网页中设置文本字体、颜色、大小、样式等,是网页美化中经常使用的标签。 常见的HTML格式标签 下面介绍一些常用…

    html 2023年5月30日
    00
  • Mybatis代码生成器Mybatis Generator(MBG)实战详解

    Mybatis Generator(MBG)实战详解 Mybatis Generator(简称MBG)是一个基于Mybatis框架的代码生成器。MBG可以帮助开发者快速生成DAO(Data Access Object)层的代码。本文将详细讲解MBG的使用方法,力求使初学者也能轻松上手。 安装MBG MBG可以通过Maven直接引入。在项目的pom.xml中加…

    html 2023年5月30日
    00
  • 在Android TextView中显示图片的4种方式详解

    下面我会详细讲解”在Android TextView中显示图片的4种方式详解”。 一、前言 在Android开发中,TextView是常用的控件之一,而TextView中显示图片也是非常常见的需求。本篇文章就详细讲解如何在Android TextView中显示图片的4种方式。 二、四种显示图片的方式 1. 在TextView中使用HTML显示图片 的确,HT…

    html 2023年5月31日
    00
  • 网络营销推广中怎么做好论坛营销

    以下是“网络营销推广中怎么做好论坛营销”的完整攻略: 网络营销推广中怎么做好论坛营销? 论坛营销是网络营销推广的一种重要方式,可以帮助企业提高品牌知名度和销售额。以下是一些关于如何做好论坛营销的技巧和步骤,可以帮助企业在论坛上进行有效的营销推广。 技巧1:选择合适的论坛 在进行论坛营销时,您需要选择合适的论坛。您可以选择与您的产品或服务相关的论坛,以便更好地…

    html 2023年5月18日
    00
  • 怎么让iCloud更安全?4个步骤让你的iCloud账户更加安全

    怎么让iCloud更安全?4个步骤让你的iCloud账户更加安全 iCloud是苹果公司提供的云存储服务,为了保护您的iCloud账户安全,以下是4个步骤让您的iCloud账户更加安全的详细攻略: 步骤1:启用两步验证 打开iCloud设置。 单击“账户详情”。 选择“安全”。 启用两步验证。 按照提示完成设置。 步骤2:设置强密码 打开iCloud设置。 …

    html 2023年5月17日
    00
  • Win10怎么去除桌面快捷方式图标左下角的小箭头

    以下是Win10去除桌面快捷方式图标左下角小箭头的攻略: 使用“Ultimate Windows Tweaker”工具:您可以使用“Ultimate Windows Tweaker”工具来去除桌面快捷方式图标左下角的小箭头。该工具是一款免费的第三方工具,可以帮助您优化和定制Windows 10系统。在该工具中,您可以找到“桌面”选项卡,然后选择“去除快捷方式…

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