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方式解析是一种在Java或其它编程语言中处理XML数据的常见方法。...理解并掌握DOM解析机制对于任何从事XML处理的开发者都至关重要,因为它为理解和操作XML文档提供了一种直观且灵活的方式。
在Android中,我们通常使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类来实现DOM解析。 步骤一:导入必要的库 在Android项目中,我们需要导入以下库以使用DOM解析XML: ```java import...
在Android Studio中,我们经常使用DOM解析XML资源文件,如布局文件。例如,读取XML配置文件以获取应用程序设置: - 创建XML配置文件(如`config.xml`)放在`res/raw`目录下。 - 使用上述DOM解析方法读取并处理...
DOM解析会将整个XML文档加载到内存中形成一棵树形结构,方便访问任意节点,但内存消耗大;SAX解析则采用事件驱动,逐行读取XML,适合处理大型文档,但不支持随机访问。 三、DOM4J解析XML 1. 创建Document对象:使用...
DOMParser接口提供了解析XML字符串并创建DOM文档的方法,以便于开发者可以使用DOM API来查询、修改或操作XML数据。 以下是对"DOMParser解析XML"这一主题的详细说明: 1. **DOMParser的基本使用**: 使用DOMParser...
使用 dom4j 解析 XML dom4j 解析 XML dom4j解析xml
下面我们将深入探讨DOM解析XML以及如何创建XML。 DOM解析XML的过程分为以下几个步骤: 1. **加载XML文档**:首先,我们需要通过DOM解析器加载XML文档。在JavaScript中,可以使用`DOMParser`对象的`parseFromString...
1. **导入库**:使用DOM解析XML时,我们需要导入javax.xml.parsers和org.w3c.dom相关的库。例如: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; ...
标题中的"DOM_XML.rar"可能是一个包含DOM解析XML相关示例的压缩文件,"DOM_dom xml_dom xml java_dom解析xml_java解析xml"这部分描述了文件的主要内容,即关于DOM(Document Object Model)在XML解析中的应用,特别...
总的来说,DOM解析方式在Android中适用于小型或中型XML文件,因为它将整个XML加载到内存,可以快速访问任何节点,但不适合处理大型XML文件。对于大型文件,更推荐使用SAX(Simple API for XML)或Pull解析器,它们以...
使用DOM解析XML的基本步骤如下: 1. **导入必要的库**:在Java中,DOM解析功能主要由`javax.xml.parsers`和`org.w3c.dom`包提供。因此,首先需要在代码中导入这些库: ```java import javax.xml.parsers....
总结来说,Android中使用DOM解析XML是一种常见且直观的方式,适合处理小规模的数据。结合ButterKnife库,可以方便地将解析结果与UI组件进行绑定,提高代码的可读性和维护性。但请注意,对于大文件,考虑使用SAX或者...
- **配置文件解析**: 许多应用使用XML作为配置文件的格式,DOM4J可以方便地读取和更新这些配置信息。 - **Web服务**: 在SOAP等协议中,XML是常用的数据传输格式,DOM4J能够帮助构建和解析这些XML消息。 - **文档生成...
下面将详细介绍在Android中使用DOM解析XML的基本步骤和关键知识点。 1. **导入XML解析库** 在Android项目中,我们不需要额外导入库,因为DOM解析器是Java标准库的一部分,已经包含在Android SDK中。这意味着你可以...
DOM解析器的优点在于提供了一种灵活且易于使用的API,可以方便地进行添加、删除和修改XML内容。以下是一个DOM解析的例子: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document...
1. **解析XML**:DOM4J支持使用DOM、SAX或StAX解析器读取XML文件,其中DOM是将整个XML文档加载到内存中,适用于小型文件;SAX是事件驱动的解析,适用于大文件;而StAX则提供了一种更高效的方式,通过迭代器逐个处理...
在Java中,可以使用javax.xml.parsers.DocumentBuilderFactory和org.w3c.dom.Document接口来实现DOM解析。 使用DOM解析XML的基本步骤如下: 1. 创建DocumentBuilderFactory实例。 2. 使用DocumentBuilderFactory...
在Android中,我们主要使用Java的标准库`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`来实现DOM解析。这些库提供了创建DOM解析器、解析XML文件和操作XML节点的功能。 ### 3. 实现步骤 ####...