`

XML使用DOM方式解析

    博客分类:
  • XML
xml 
阅读更多
1. 元素和节点

<?xml version="1.0" encoding="UTF-8"?>
<student>
    <name id="001">张三</name>
    <sex>男</sex>
    <age>20</age>
</student>

元素一定是节点,但是节点不一定是元素。<name id="001">张三</name>
元素节点:name
属性节点:id="001"
文本节点:张三


2. DOM方式解析XML原理

基于DOM(Document Object Model,文档对象模型)解析方式,是把整个XML文档加载到内存,转化成DOM树,因此应用程序可以随机的访问DOM树的任何数据;
优点:灵活性强,速度快;
缺点:消耗资源比较多;


2.1 单节点

<?xml version="1.0" encoding="UTF-8"?>
<student>
    <name id="001">张三</name>
    <sex>男</sex>
    <age>20</age>
</student>


package com.andrew.xml;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class DOM01 {
    public static void main(String[] args) {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse("src/student.xml");
            NodeList nodeList = document.getElementsByTagName("student");
            Element element = (Element) nodeList.item(0);
            System.out.println("姓名:" + element.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
            System.out.println("性别:" + element.getElementsByTagName("sex").item(0).getFirstChild().getNodeValue());
            System.out.println("年龄:" + element.getElementsByTagName("age").item(0).getFirstChild().getNodeValue());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
运行结果:
姓名:张三
性别:男
年龄:20


2.2 多节点

<?xml version="1.0" encoding="UTF-8"?>
<students>
    <student>
        <name id="001" xx="哈哈">张三</name>
        <sex>男</sex>
        <age>20</age>
    </student>
    <student>
        <name id="002">李四</name>
        <sex>女</sex>
        <age>21</age>
    </student>
</students>


package com.andrew.xml;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class DOM02 {
    public static void printNodeAttr(Node node) {
        NamedNodeMap namedNodeMap = node.getAttributes();
        for (int i = 0; i < namedNodeMap.getLength(); i++) {
            Node attrNode = namedNodeMap.item(i);
            System.out.println(attrNode.getNodeName() + ":" + attrNode.getFirstChild().getNodeValue());
        }
    }
    public static void main(String[] args) {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse("src/students.xml");
            NodeList nodeList = document.getElementsByTagName("students");
            Element element = (Element) nodeList.item(0);
            NodeList studentsNodeList = element.getElementsByTagName("student");
            for (int i = 0; i < studentsNodeList.getLength(); i++) {
                Element e = (Element) studentsNodeList.item(i);
                System.out.println("姓名:" + e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
                printNodeAttr(e.getElementsByTagName("name").item(0));
                System.out.println("性别:" + e.getElementsByTagName("sex").item(0).getFirstChild().getNodeValue());
                System.out.println("年龄:" + e.getElementsByTagName("age").item(0).getFirstChild().getNodeValue());
                System.out.println("================");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

运行结果:
姓名:张三
id:001
xx:哈哈
性别:男
年龄:20
================
姓名:李四
id:002
性别:女
年龄:21
================
分享到:
评论

相关推荐

    XML文件DOM方式解析

    XML文件DOM方式解析是一种在Java或其它编程语言中处理XML数据的常见方法。...理解并掌握DOM解析机制对于任何从事XML处理的开发者都至关重要,因为它为理解和操作XML文档提供了一种直观且灵活的方式。

    Android使用DOM方式解析XML

    在Android中,我们通常使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类来实现DOM解析。 步骤一:导入必要的库 在Android项目中,我们需要导入以下库以使用DOM解析XML: ```java import...

    Dom方式解析XML

    在Android Studio中,我们经常使用DOM解析XML资源文件,如布局文件。例如,读取XML配置文件以获取应用程序设置: - 创建XML配置文件(如`config.xml`)放在`res/raw`目录下。 - 使用上述DOM解析方法读取并处理...

    xmldom4j解析

    DOM解析会将整个XML文档加载到内存中形成一棵树形结构,方便访问任意节点,但内存消耗大;SAX解析则采用事件驱动,逐行读取XML,适合处理大型文档,但不支持随机访问。 三、DOM4J解析XML 1. 创建Document对象:使用...

    DOMParser解析xml

    DOMParser接口提供了解析XML字符串并创建DOM文档的方法,以便于开发者可以使用DOM API来查询、修改或操作XML数据。 以下是对"DOMParser解析XML"这一主题的详细说明: 1. **DOMParser的基本使用**: 使用DOMParser...

    使用 dom4j 解析 XML

    使用 dom4j 解析 XML dom4j 解析 XML dom4j解析xml

    DOM解析XML 创建XML

    下面我们将深入探讨DOM解析XML以及如何创建XML。 DOM解析XML的过程分为以下几个步骤: 1. **加载XML文档**:首先,我们需要通过DOM解析器加载XML文档。在JavaScript中,可以使用`DOMParser`对象的`parseFromString...

    xml解析 dom方式 例子和讲解

    1. **导入库**:使用DOM解析XML时,我们需要导入javax.xml.parsers和org.w3c.dom相关的库。例如: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; ...

    DOM_XML.rar_DOM_dom xml_dom xml java_dom解析xml_java解析xml

    标题中的"DOM_XML.rar"可能是一个包含DOM解析XML相关示例的压缩文件,"DOM_dom xml_dom xml java_dom解析xml_java解析xml"这部分描述了文件的主要内容,即关于DOM(Document Object Model)在XML解析中的应用,特别...

    android dom方式解析xml

    总的来说,DOM解析方式在Android中适用于小型或中型XML文件,因为它将整个XML加载到内存,可以快速访问任何节点,但不适合处理大型XML文件。对于大型文件,更推荐使用SAX(Simple API for XML)或Pull解析器,它们以...

    java平台中使用DOM解析xml文件

    使用DOM解析XML的基本步骤如下: 1. **导入必要的库**:在Java中,DOM解析功能主要由`javax.xml.parsers`和`org.w3c.dom`包提供。因此,首先需要在代码中导入这些库: ```java import javax.xml.parsers....

    Android Dom解析XML

    总结来说,Android中使用DOM解析XML是一种常见且直观的方式,适合处理小规模的数据。结合ButterKnife库,可以方便地将解析结果与UI组件进行绑定,提高代码的可读性和维护性。但请注意,对于大文件,考虑使用SAX或者...

    dom4j解析xml详解

    - **配置文件解析**: 许多应用使用XML作为配置文件的格式,DOM4J可以方便地读取和更新这些配置信息。 - **Web服务**: 在SOAP等协议中,XML是常用的数据传输格式,DOM4J能够帮助构建和解析这些XML消息。 - **文档生成...

    android上使用DOM解析XML

    下面将详细介绍在Android中使用DOM解析XML的基本步骤和关键知识点。 1. **导入XML解析库** 在Android项目中,我们不需要额外导入库,因为DOM解析器是Java标准库的一部分,已经包含在Android SDK中。这意味着你可以...

    Java使用sax、dom、dom4j解析xml文档

    DOM解析器的优点在于提供了一种灵活且易于使用的API,可以方便地进行添加、删除和修改XML内容。以下是一个DOM解析的例子: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document...

    dom4解析xml需要的包

    1. **解析XML**:DOM4J支持使用DOM、SAX或StAX解析器读取XML文件,其中DOM是将整个XML文档加载到内存中,适用于小型文件;SAX是事件驱动的解析,适用于大文件;而StAX则提供了一种更高效的方式,通过迭代器逐个处理...

    分别使用DOM和DOM4j解析XML文件

    在Java中,可以使用javax.xml.parsers.DocumentBuilderFactory和org.w3c.dom.Document接口来实现DOM解析。 使用DOM解析XML的基本步骤如下: 1. 创建DocumentBuilderFactory实例。 2. 使用DocumentBuilderFactory...

    android Dom解析xml文件

    在Android中,我们主要使用Java的标准库`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`来实现DOM解析。这些库提供了创建DOM解析器、解析XML文件和操作XML节点的功能。 ### 3. 实现步骤 ####...

Global site tag (gtag.js) - Google Analytics