使用Java的DOM解析XML文件方法详解
需积分: 10 34 浏览量
更新于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等更轻量级的解析方法。
2023-07-30 上传
2022-03-24 上传
2013-03-26 上传
2020-09-04 上传
2022-09-19 上传
2020-09-04 上传
2011-03-10 上传
106 浏览量
meidibanjijian
- 粉丝: 7
- 资源: 50
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码