cari
Rumahpembangunan bahagian belakangTutorial XML/RSSJava&Xml教程(二)使用DOM方式解析XML文件


DOM XML 解析方式是最容易理解的,它將XML文件作为Document对象读取到内存中,然后你可以轻松地遍历不同的元素和节点对象。遍历元素和节点不需要按照顺序进行。
DOM解析方式适合尺寸较小的XML文件,由于它將整个XML文件全部装载到内存中处理,所以不太适合处理尺寸较大的XML文件。对于较大的XML文件需要使用SAX解析。
在本教程中我们将对XML文件读取和解析,并用它来创建对象。下面是我们将要解析的XML文件。
employee.xml

<?xml version="1.0"?><Employees>
    <Employee>
        <name>Pankaj</name>
        <age>29</age>
        <role>Java Developer</role>
        <gender>Male</gender>
    </Employee>
    <Employee>
        <name>Lisa</name>
        <age>35</age>
        <role>CSS Developer</role>
        <gender>Female</gender>
    </Employee></Employees>

这个XML文件的内容是一些员工信息列表,因此我们需要创建一个Employee类来表示员工,然后將XML文件信息读取到程序中。
下面是Employee类的定义:

package com.journaldev.xml;public class Employee {
    private String name;    
    private String gender;    
    private int age;    
    private String role;    
    public String getName() {        
    return name;
    }    public void setName(String name) {        this.name = name;
    }    public String getGender() {        return gender;
    }    public void setGender(String gender) {        this.gender = gender;
    }    public int getAge() {        return age;
    }    public void setAge(int age) {        this.age = age;
    }    public String getRole() {        return role;
    }    public void setRole(String role) {        this.role = role;
    }    @Override
    public String toString() {        
    return "Employee:: Name=" + this.name + " Age=" + this.age + " Gender=" + this.gender +                
    " Role=" + this.role;
    }

}

需要注意的是这里我重写了toString()方法以便打印出员工对象的有用信息。接下来我们在程序中使用DOM解析方式读取XML文件来获取Employee 对象列表。
XMLReaderDOM.java

package com.journaldev.xml;
import java.io.File;import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;import org.w3c.dom.Element;
import org.w3c.dom.Node;import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;public class XMLReaderDOM {

    public static void main(String[] args) {
        String filePath = "employee.xml";
        File xmlFile = new File(filePath);
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder;
        try {
            dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(xmlFile);
            doc.getDocumentElement().normalize();
            System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
            NodeList nodeList = doc.getElementsByTagName("Employee");
            //now XML is loaded as Document in memory, lets convert it to Object List
            List<Employee> empList = new ArrayList<Employee>();
            for (int i = 0; i < nodeList.getLength(); i++) {
                empList.add(getEmployee(nodeList.item(i)));
            }
            //lets print Employee list information
            for (Employee emp : empList) {
                System.out.println(emp.toString());
            }
        } catch (SAXException | ParserConfigurationException | IOException e1) {
            e1.printStackTrace();
        }

    }


    private static Employee getEmployee(Node node) {
        //XMLReaderDOM domReader = new XMLReaderDOM();
        Employee emp = new Employee();
        if (node.getNodeType() == Node.ELEMENT_NODE) {
            Element element = (Element) node;
            emp.setName(getTagValue("name", element));
            emp.setAge(Integer.parseInt(getTagValue("age", element)));
            emp.setGender(getTagValue("gender", element));
            emp.setRole(getTagValue("role", element));
        }

        return emp;
    }


    private static String getTagValue(String tag, Element element) {
        NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes();
        Node node = (Node) nodeList.item(0);
        return node.getNodeValue();
    }

}

程序输出内容如下:

Root element :EmployeesEmployee:: Name=Pankaj Age=29 Gender=Male 
Role=Java DeveloperEmployee:: Name=Lisa Age=35 Gender=Female Role=CSS Developer

在实际情况下,我们在解析XML文件之前先要对XML文件的合法性进行校验,学习如何使用XSD校验XML文件。

原文地址:http://www.php.cn/

DOM XML 解析方式是最容易理解的,它將XML文件作为Document对象读取到内存中,然后你可以轻松地遍历不同的元素和节点对象。遍历元素和节点不需要按照顺序进行。
DOM解析方式适合尺寸较小的XML文件,由于它將整个XML文件全部装载到内存中处理,所以不太适合处理尺寸较大的XML文件。对于较大的XML文件需要使用SAX解析。
在本教程中我们将对XML文件读取和解析,并用它来创建对象。下面是我们将要解析的XML文件。
employee.xml

<?xml version="1.0"?><Employees>
    <Employee>
        <name>Pankaj</name>
        <age>29</age>
        <role>Java Developer</role>
        <gender>Male</gender>
    </Employee>
    <Employee>
        <name>Lisa</name>
        <age>35</age>
        <role>CSS Developer</role>
        <gender>Female</gender>
    </Employee></Employees>

这个XML文件的内容是一些员工信息列表,因此我们需要创建一个Employee类来表示员工,然后將XML文件信息读取到程序中。
下面是Employee类的定义:

package com.journaldev.xml;public class Employee {
    private String name;    
    private String gender;    
    private int age;    
    private String role;    
    public String getName() {        
    return name;
    }    public void setName(String name) {        
    this.name = name;
    }    public String getGender() {        
    return gender;
    }    public void setGender(String gender) {        
    this.gender = gender;
    }    public int getAge() {        
    return age;
    }    public void setAge(int age) {        
    this.age = age;
    }    public String getRole() {        
    return role;
    }    public void setRole(String role) {        
    this.role = role;
    }    @Override
    public String toString() {        
    return "Employee:: Name=" + this.name + " Age=" + this.age + " Gender=" + this.gender +                
    " Role=" + this.role;
    }

}

需要注意的是这里我重写了toString()方法以便打印出员工对象的有用信息。接下来我们在程序中使用DOM解析方式读取XML文件来获取Employee 对象列表。
XMLReaderDOM.java

package com.journaldev.xml;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;import org.w3c.dom.Element;
import org.w3c.dom.Node;import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;public class XMLReaderDOM {

    public static void main(String[] args) {
        String filePath = "employee.xml";
        File xmlFile = new File(filePath);
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder;
        try {
            dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(xmlFile);
            doc.getDocumentElement().normalize();
            System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
            NodeList nodeList = doc.getElementsByTagName("Employee");
            //now XML is loaded as Document in memory, lets convert it to Object List
            List<Employee> empList = new ArrayList<Employee>();
            for (int i = 0; i < nodeList.getLength(); i++) {
                empList.add(getEmployee(nodeList.item(i)));
            }
            //lets print Employee list information
            for (Employee emp : empList) {
                System.out.println(emp.toString());
            }
        } catch (SAXException | ParserConfigurationException | IOException e1) {
            e1.printStackTrace();
        }

    }


    private static Employee getEmployee(Node node) {
        //XMLReaderDOM domReader = new XMLReaderDOM();
        Employee emp = new Employee();
        if (node.getNodeType() == Node.ELEMENT_NODE) {
            Element element = (Element) node;
            emp.setName(getTagValue("name", element));
            emp.setAge(Integer.parseInt(getTagValue("age", element)));
            emp.setGender(getTagValue("gender", element));
            emp.setRole(getTagValue("role", element));
        }

        return emp;
    }


    private static String getTagValue(String tag, Element element) {
        NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes();
        Node node = (Node) nodeList.item(0);
        return node.getNodeValue();
    }

}

程序输出内容如下:

Root element :EmployeesEmployee:: Name=Pankaj Age=29 Gender=Male Role=Java DeveloperEmployee:: Name=Lisa Age=35 Gender=Female Role=CSS Developer

在实际情况下,我们在解析XML文件之前先要对XML文件的合法性进行校验,学习如何使用XSD校验XML文件。

以上就是Java&Xml教程(二)使用DOM方式解析XML文件的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Kelebihan XML dalam RSS: menyelam dalam teknikalKelebihan XML dalam RSS: menyelam dalam teknikalApr 23, 2025 am 12:02 AM

XML mempunyai kelebihan data berstruktur, skalabilitas, keserasian silang platform dan pengesahan parsing dalam RSS. 1) data berstruktur memastikan konsistensi dan kebolehpercayaan kandungan; 2) Skalabiliti membolehkan penambahan tag tersuai untuk memenuhi keperluan kandungan; 3) keserasian silang platform menjadikannya berfungsi dengan lancar pada peranti yang berbeza; 4) Alat analisis dan pengesahan memastikan kualiti dan integriti makanan.

RSS dalam XML: Membentangkan teras sindikasi kandunganRSS dalam XML: Membentangkan teras sindikasi kandunganApr 22, 2025 am 12:08 AM

Pelaksanaan RSS dalam XML adalah untuk mengatur kandungan melalui format XML berstruktur. 1) RSS menggunakan XML sebagai format pertukaran data, termasuk elemen seperti maklumat saluran dan senarai projek. 2) Apabila menghasilkan fail RSS, kandungan mesti dianjurkan mengikut spesifikasi dan diterbitkan ke pelayan untuk langganan. 3) Fail RSS boleh dilanggan melalui pembaca atau pemalam untuk mengemas kini kandungan secara automatik.

Di luar asas: Ciri -ciri Dokumen RSS LanjutanDi luar asas: Ciri -ciri Dokumen RSS LanjutanApr 21, 2025 am 12:03 AM

Ciri -ciri lanjutan RSS termasuk ruang nama kandungan, modul lanjutan, dan langganan bersyarat. 1) Ruang nama kandungan memanjangkan fungsi RSS, 2) modul yang dilanjutkan seperti Dublincore atau iTunes untuk menambah metadata, 3) penyertaan penapis langganan bersyarat berdasarkan keadaan tertentu. Fungsi -fungsi ini dilaksanakan dengan menambahkan unsur -unsur dan atribut XML untuk meningkatkan kecekapan pemerolehan maklumat.

Tulang belakang xml: bagaimana suapan rss disusunTulang belakang xml: bagaimana suapan rss disusunApr 20, 2025 am 12:02 AM

RssfeedsusexmltostructureContentupdates.1) xmlprovidesahierarchicalstructurefordata.2) theelementDefinestHefeed'sidentityandcontainselements.3) elementsRepresentIndividualcontentpieces.4) rssiseStomeS

RSS & XML: Memahami kandungan web yang dinamikRSS & XML: Memahami kandungan web yang dinamikApr 19, 2025 am 12:03 AM

RSS dan XML adalah alat untuk pengurusan kandungan web. RSS digunakan untuk menerbitkan dan melanggan kandungan, dan XML digunakan untuk menyimpan dan memindahkan data. Mereka bekerja dengan penerbitan kandungan, langganan, dan kemas kini. Contoh penggunaan termasuk catatan blog RSS dan maklumat buku penyimpanan XML.

Dokumen RSS: Asas Sindikasi WebDokumen RSS: Asas Sindikasi WebApr 18, 2025 am 12:04 AM

Dokumen RSS adalah fail berstruktur berasaskan XML yang digunakan untuk menerbitkan dan melanggan kandungan yang sering dikemas kini. Fungsi utamanya termasuk: 1) kemas kini kandungan automatik, 2) pengagregatan kandungan, dan 3) meningkatkan kecekapan pelayaran. Melalui RSSFEED, pengguna boleh melanggan dan mendapatkan maklumat terkini dari sumber yang berbeza tepat pada masanya.

Penyahkodan RSS: Struktur XML suapan kandunganPenyahkodan RSS: Struktur XML suapan kandunganApr 17, 2025 am 12:09 AM

Struktur XML RSS termasuk: 1. XML Deklarasi dan versi RSS, 2. Saluran (saluran), 3. Item. Bahagian ini membentuk asas fail RSS, yang membolehkan pengguna mendapatkan dan memproses maklumat kandungan dengan menghuraikan data XML.

Cara Menguruskan dan Menggunakan Suapan RSS Berasaskan XMLCara Menguruskan dan Menggunakan Suapan RSS Berasaskan XMLApr 16, 2025 am 12:05 AM

Rssfeedsusexmltosyndicatecontent; parsingtheminvolvesloadingxml, navigatingitssstructure, andextractingdata.applicationsincludeBuildingNewsaggregatorsandtrackingpodcastepisodes.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.