使用Java的DOM解析XML文件方法详解
需积分: 10 26 浏览量
更新于2024-09-19
收藏 3KB TXT 举报
"本文将介绍如何使用W3C DOM(Document Object Model)解析XML文档,以提取和操作XML数据。示例中展示了如何处理一个包含书籍信息的XML文件,并通过Java代码实现解析过程。"
在XML处理中,W3C DOM是一种流行的方法,它将XML文档作为一个树形结构进行处理,每个元素、属性和文本都表示为树中的节点。DOM允许开发者通过API来访问和修改XML文档的任何部分,无论它们在文档中的位置如何。在本示例中,我们将探讨如何解析一个简单的XML文件,该文件存储了两本书的信息,包括书名和价格。
首先,让我们分析提供的XML文档:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="12">
<name>thinkinginjava</name>
<price>85.5</price>
</book>
<book id="15">
<name>Spring in Action</name>
<price>39.0</price>
</book>
</books>
```
这个XML文档包含一个`books`根元素,下面是两个`book`子元素,每个`book`元素都包含了`name`和`price`信息。
为了解析这个XML,我们需要使用Java的`javax.xml.parsers`包,该包提供了DOM解析器。以下是一个简单的Java类`DomParseService`,用于解析上述XML文件:
```java
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.xtlh.cn.entity.Book; // 假设Book是定义书籍信息的实体类
public class DomParseService {
public List<Book> getBooks(InputStream in) {
List<Book> books = new ArrayList<>();
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(in);
// 获取XML文档的根元素
Element rootElement = doc.getDocumentElement();
NodeList bookNodes = rootElement.getElementsByTagName("book");
for (int i = 0; i < bookNodes.getLength(); i++) {
Node bookNode = bookNodes.item(i);
if (bookNode.getNodeType() == Node.ELEMENT_NODE) {
Element bookElement = (Element) bookNode;
String id = bookElement.getAttribute("id");
String name = bookElement.getElementsByTagName("name").item(0).getTextContent();
String price = bookElement.getElementsByTagName("price").item(0).getTextContent();
Book book = new Book(id, name, Double.parseDouble(price));
books.add(book);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return books;
}
}
```
在这个类中,我们首先创建了一个`DocumentBuilder`实例,然后使用它来解析输入流中的XML文档。`Document`对象代表整个XML文档。接着,我们获取`books`元素的所有`book`子元素。对于每个`book`元素,我们提取`id`、`name`和`price`信息,并将它们封装到`Book`实体对象中,最后添加到`books`列表中。
通过这个例子,我们了解了如何使用W3C DOM解析XML文件,以及如何遍历和提取XML文档中的数据。这种方法适用于需要对XML文档进行深度遍历和复杂操作的情况。然而,对于大型XML文件,考虑到性能问题,可能需要考虑使用SAX或StAX等更轻量级的解析方法。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2019-04-09 上传
2020-09-04 上传
102 浏览量
2020-09-04 上传
2022-09-23 上传
meidibanjijian
- 粉丝: 7
- 资源: 50
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查