栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 人工智能 > NLP

Java&Xml教程(二)使用DOM方式解析XML文件

NLP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java&Xml教程(二)使用DOM方式解析XML文件


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

            Pankaj        29        Java Developer        Male                Lisa        35        CSS Developer        Female    

这个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 empList = 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();    }}

程序输出内容如下:

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文件。

原文地址:https://www.mshxw.com/

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

            Pankaj        29        Java Developer        Male                Lisa        35        CSS Developer        Female    

这个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 empList = 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();    }}

程序输出内容如下:

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.kaotop.com)!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/794801.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号