本篇文章給大家分享的是有關(guān)如何使用DOM方式對(duì)XML文件進(jìn)行解析,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括應(yīng)縣網(wǎng)站建設(shè)、應(yīng)縣網(wǎng)站制作、應(yīng)縣網(wǎng)頁(yè)制作以及應(yīng)縣網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,應(yīng)縣網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到應(yīng)縣省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
DOM XML 解析方式是最容易理解的,它將XML文件作為Document對(duì)象讀取到內(nèi)存中,然后你可以輕松地遍歷不同的元素和節(jié)點(diǎn)對(duì)象。遍歷元素和節(jié)點(diǎn)不需要按照順序進(jìn)行。
DOM解析方式適合尺寸較小的XML文件,由于它將整個(gè)XML文件全部裝載到內(nèi)存中處理,所以不太適合處理尺寸較大的XML文件。對(duì)于較大的XML文件需要使用SAX解析。
在本教程中我們將對(duì)XML文件讀取和解析,并用它來(lái)創(chuàng)建對(duì)象。下面是我們將要解析的XML文件。
employee.xml
Pankaj 29 Java Developer Male Lisa 35 CSS Developer Female
這個(gè)XML文件的內(nèi)容是一些員工信息列表,因此我們需要?jiǎng)?chuàng)建一個(gè)Employee類來(lái)表示員工,然后將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; } }
需要注意的是這里我重寫(xiě)了toString()方法以便打印出員工對(duì)象的有用信息。接下來(lái)我們?cè)诔绦蛑惺褂肈OM解析方式讀取XML文件來(lái)獲取Employee 對(duì)象列表。
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 ListempList = new ArrayList (); 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(); } }
程序輸出內(nèi)容如下:
Root element :EmployeesEmployee:: Name=Pankaj Age=29 Gender=Male Role=Java DeveloperEmployee:: Name=Lisa Age=35 Gender=Female Role=CSS Developer
在實(shí)際情況下,我們?cè)诮馕鯴ML文件之前先要對(duì)XML文件的合法性進(jìn)行校驗(yàn),學(xué)習(xí)如何使用XSD校驗(yàn)XML文件。
原文地址:http://www.php.cn/
DOM XML 解析方式是最容易理解的,它將XML文件作為Document對(duì)象讀取到內(nèi)存中,然后你可以輕松地遍歷不同的元素和節(jié)點(diǎn)對(duì)象。遍歷元素和節(jié)點(diǎn)不需要按照順序進(jìn)行。
DOM解析方式適合尺寸較小的XML文件,由于它將整個(gè)XML文件全部裝載到內(nèi)存中處理,所以不太適合處理尺寸較大的XML文件。對(duì)于較大的XML文件需要使用SAX解析。
在本教程中我們將對(duì)XML文件讀取和解析,并用它來(lái)創(chuàng)建對(duì)象。下面是我們將要解析的XML文件。
employee.xml
Pankaj 29 Java Developer Male Lisa 35 CSS Developer Female
這個(gè)XML文件的內(nèi)容是一些員工信息列表,因此我們需要?jiǎng)?chuàng)建一個(gè)Employee類來(lái)表示員工,然后將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; } }
需要注意的是這里我重寫(xiě)了toString()方法以便打印出員工對(duì)象的有用信息。接下來(lái)我們?cè)诔绦蛑惺褂肈OM解析方式讀取XML文件來(lái)獲取Employee 對(duì)象列表。
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 ListempList = new ArrayList (); 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(); } }
程序輸出內(nèi)容如下:
Root element :EmployeesEmployee:: Name=Pankaj Age=29 Gender=Male Role=Java DeveloperEmployee:: Name=Lisa Age=35 Gender=Female Role=CSS Developer
在實(shí)際情況下,我們?cè)诮馕鯴ML文件之前先要對(duì)XML文件的合法性進(jìn)行校驗(yàn),學(xué)習(xí)如何使用XSD校驗(yàn)XML文件。
以上就是如何使用DOM方式對(duì)XML文件進(jìn)行解析,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。