dom4j解析xml文件简单版

简介: 1. 获取xml信息/*** 获取xml信息* @param filename 文件相对路径*/public static Document load(String filename) { Document document = null; try { S...

1. 获取xml信息

/**
* 获取xml信息
* @param filename 文件相对路径
*/
public static Document load(String filename) {
    Document document = null;
    try {
        SAXReader saxReader = new SAXReader();
        //使用spring的文件读取方法:org.springframework.core.io.Resource
        Resource resource = new ClassPathResource(filename);
        document = saxReader.read(resource.getFile()); // 读取XML文件,获得document对象
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return document;
}

reader的read方法是重载的,可以从InputStream, File, Url等多种不同的源来读取。得到的Document对象就代表了整个XML。
读取的字符编码是按照XML文件头定义的编码来转换。如果遇到乱码问题,注意要把各处的编码名称保持一致即可

获取根节点

root元素是xml文档的根节点。一切XML分析都是从Root元素开始的

#获取xml文档    
Document document = load("conf/test.xml");
#获取xml的根节点
Element root = document.getRootElement();

2. 常用到的方法

#获得根元素下的所有子节点。 
List<Element> elementList=root.elements();
#获得element节点的名字    
String elementName=element.getName();
#获得element节点的文本节点值    
String elementValue=element.getText(); 
#获得element节点的属性  
Attribute attribute=element.attribute();
#获得属性值
String attrValue=element.attributeValue("attrName");

3. xml遍历

xml节点的遍历有如下方式:

//方式一: 枚举所有子节点 
for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
    Element element = (Element) i.next();
    //TODO 获取相关节点信息和操作
}
//方式二: 枚举名称为foo的节点 
for ( Iterator i = root.elementIterator(foo); i.hasNext();) {
    Element foo = (Element) i.next();
    //TODO 获取相关节点信息和操作 
}
//方式三 枚举属性
for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
    Attribute attribute = (Attribute) i.next();
    //TODO 获取相关节点信息和操作 
}
//方式四: 循环遍历子节点 
List<Element> elementList=root.elements();
for(int i=0;i<elementList.size(); i++){
    Element element = (Element) elementList.get(i);
    //TODO 获取相关节点信息和操作

    //子节点遍历
    List elementRoot = element.elements();
    //判断是否存在子节点
    if(null!=elementRoot && elementRoot.size()>0){
        //递归调用此方法
        //TODO 相关操作
    }    
}
目录
相关文章
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
656 2
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
4267 65
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
Android开发 开发者
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
本文详细介绍了如何通过自定义 `attrs.xml` 文件实现 Android 自定义 View 的属性配置。以一个包含 TextView 和 ImageView 的 DemoView 为例,讲解了如何使用自定义属性动态改变文字内容和控制图片显示隐藏。同时,通过设置布尔值和点击事件,实现了图片状态的切换功能。代码中展示了如何在构造函数中解析自定义属性,并通过方法 `setSetting0n` 和 `setbackeguang` 实现功能逻辑的优化与封装。此示例帮助开发者更好地理解自定义 View 的开发流程与 attrs.xml 的实际应用。
569 2
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
|
Serverless 对象存储 人工智能
智能文件解析:体验阿里云多模态信息提取解决方案
在当今数据驱动的时代,信息的获取和处理效率直接影响着企业决策的速度和质量。然而,面对日益多样化的文件格式(文本、图像、音频、视频),传统的处理方法显然已经无法满足需求。
649 4
智能文件解析:体验阿里云多模态信息提取解决方案
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
1136 4
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
1468 8
|
消息中间件 存储 Java
RocketMQ文件刷盘机制深度解析与Java模拟实现
【11月更文挑战第22天】在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、日志流处理等场景。为了保证消息的可靠性,RocketMQ引入了一种称为“刷盘”的机制,将消息从内存写入到磁盘中,确保消息持久化。本文将从底层原理、业务场景、概念、功能点等方面深入解析RocketMQ的文件刷盘机制,并使用Java模拟实现类似的功能。
595 3
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
1114 140
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1760 29

推荐镜像

更多
  • DNS