如何在 Java 中解析 XML

x33g5p2x  于2021-10-21 转载在 Java  
字(2.6k)|赞(0)|评价(0)|浏览(345)

在本教程中,我们将使用 Java 程序通过 DOM XML parser 读取 XML 文件。 DOM 解析器将整个 XML 文档加载到内存中。

什么是 DOM?

文档对象模型 (DOM) 是一种跨平台且独立于语言的应用程序编程接口,它将 HTML、XHTML 或 XML 文档视为树结构,其中每个节点都是代表文档一部分的对象。 可以以编程方式操作这些对象,结果发生的任何可见变化都可以反映在文档的显示中。 欲了解更多信息,请阅读 Wiki

学生.xml

<?xml version="1.0"?>
<college>
    <student id="101">
        <name>WebSparrow</name>
        <rollnumber>2016</rollnumber>
        <course>Ph.D</course>
        <nationality>India</nationality>
        <mobile>+91XXXXXXXXXX</mobile>
    </student>
    <student id="102">
        <name>Smith</name>
        <rollnumber>1234</rollnumber>
        <course>B.Sc</course>
        <nationality>USA</nationality>
        <mobile>+1XXXXXXXXXX</mobile>
    </student>    
</college>

XMLFileParser.java

package org.websparrow;

import java.io.File;
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 XMLFileParser {

    public static void main(String[] args) {
        try {
            File readXml = new File("F:/student.xml");
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document d = db.parse(readXml);
            d.getDocumentElement().normalize();
            System.out.println("Root Element : " + d.getDocumentElement().getNodeName());
            System.out.println("======================");
            NodeList nodeList = d.getElementsByTagName("student");
            for (int index = 0; index < nodeList.getLength(); index++) {
                Node node = nodeList.item(index);
                System.out.println("\nCurrent Element : " + node.getNodeName());
                if (node.getNodeType() == Node.ELEMENT_NODE) {
                    Element e = (Element) node;
                    System.out.println("Student id: " + e.getAttribute("id"));
                    System.out.println("Name : " + e.getElementsByTagName("name").item(0).getTextContent());
                    System.out.println("Roll Number : " + e.getElementsByTagName("rollnumber").item(0).getTextContent());
                    System.out.println("Course : " + e.getElementsByTagName("course").item(0).getTextContent());
                    System.out.println("Nationality : " + e.getElementsByTagName("nationality").item(0).getTextContent());
                    System.out.println("Mobile : " + e.getElementsByTagName("mobile").item(0).getTextContent());

                }

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

输出:

Root Element : college
======================

Current Element : student
Student id: 101
Name : WebSparrow
Roll Number : 2016
Course : Ph.D
Nationality : India
Mobile : +91XXXXXXXXXX

Current Element : student
Student id: 102
Name : Smith
Roll Number : 1234
Course : B.Sc
Nationality : USA
Mobile : +1XXXXXXXXXXX

相关文章

微信公众号

最新文章

更多