生活随笔
收集整理的這篇文章主要介紹了
JavaXml教程(二)使用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
.w 3c
.dom .Document
import org
.w 3c
.dom .Element
import org
.w 3c
.dom .Node
import org
.w 3c
.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 dBuildertry {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 ListList<Employee> empList = new ArrayList<Employee>()for (int i =
0 empList
.add (getEmployee(nodeList
.item (i)))}//lets print Employee list informationfor (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) nodeemp
.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 :Employees
Employee:: Name =Pankaj Age =29 Gender =Male Role =Java Developer
Employee:: Name =Lisa Age =35 Gender =Female Role =CSS Developer 在實際情況下,我們在解析XML文件之前先要對XML文件的合法性進行校驗,學習如何使用XSD校驗XML文件。
原文地址:http://www.journaldev.com/898/how-to-read-an-xml-file-in-java-dom-parser
轉載于:https://www.cnblogs.com/lanzhi/p/6468407.html
總結
以上是生活随笔 為你收集整理的JavaXml教程(二)使用DOM方式解析XML文件 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。