XML-dom4j实战

2024-09-06 09:38
文章标签 xml 实战 dom4j

本文主要是介绍XML-dom4j实战,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

dom4j是一个用来读取XML的工具包,它是采用DOM思想来读取的,也就是把XML组织成一个文档树,然后根据相应的节点来读取。

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.Text;
import org.dom4j.io.SAXReader;
import org.junit.Test;/*** 编写DOM4J的工具类* @author Neuclil**/public class ReadUtils {@Testpublic void test(){File file = new File("./src/contact.xml");List<Contact> contacts = getContacts(file);Iterator<Contact> iterator = contacts.iterator();while(iterator.hasNext()){Contact contact = iterator.next();System.out.println(contact);}}public static Document readFile(File file){SAXReader saxReader = new SAXReader();Document doc = null;try {doc = saxReader.read(file);} catch (DocumentException e) {e.printStackTrace();}return doc;}//演示读取文档的节点信息的方法@Testpublic void test1(){File file = new File("./src/contact.xml");Document doc = readFile(file);Iterator<Node> iterator = doc.nodeIterator();while(iterator.hasNext()){Node node = iterator.next();System.out.println(node.getName());if(node instanceof Element){Element element = (Element)node;Iterator<Node> iterator2 = element.nodeIterator();while(iterator2.hasNext()){Node node2 = iterator2.next();System.out.println(node2.getName());}}}//得到的结果为contacts.}//遍历文档中的所有节点 包括 文本节点, 标签节点@Testpublic void test2(){File file = new File("./src/contact.xml");Document doc = readFile(file);Element rootElement = doc.getRootElement();StringBuffer sb = new StringBuffer();getChild(rootElement, sb);System.out.println(sb.toString());}private void getChild(Element element, StringBuffer sb){sb.append("<" + element.getName());List<Attribute> attrs = element.attributes();Iterator<Attribute> iterator = attrs.iterator();while(iterator.hasNext()){Attribute attr = iterator.next();sb.append(" "+attr.getName()+"="+"\""+attr.getValue()+"\"");}sb.append(">");Iterator<Node> nodeIt = element.nodeIterator();while(nodeIt.hasNext()){Node node = nodeIt.next();if(node instanceof Element){getChild((Element)node, sb);}if(node instanceof Text){Text text = (Text)node;sb.append(text.getText());}}sb.append("</"+element.getName()+">");}//该方法演示得到子标签 的方法@Testpublic void test3(){File file = new File("./src/contact.xml");Document doc = readFile(file);Element rootElement = doc.getRootElement();//得到指定名字的第一个元素
//		Element element = rootElement.element("contact");
//		System.out.println(element.getName());
//		
//		System.out.println("-----------------------------");//得到指定名字的所有元素
//		Iterator<Element> iterator = rootElement.elementIterator("contact");
//		while(iterator.hasNext()){
//			Element element2 = iterator.next();
//			System.out.println(element2.getName());
//		}//得到所有的子元素List<Element> elements = rootElement.elements();Iterator<Element> iterator = elements.iterator();while(iterator.hasNext()){Element element = iterator.next();System.out.println(element.getName());}}public static List<Contact> getContacts(File file){Document doc = readFile(file);Element rootElement = doc.getRootElement();List<Contact> contacts = new ArrayList<Contact>();Iterator<Element> iterator = rootElement.elementIterator("contact");while(iterator.hasNext()){Contact contact = new Contact();Element element = iterator.next();contact.setId(element.attributeValue("id"));contact.setName(element.elementText("name"));contact.setAge(element.elementText("age"));contact.setPhone(element.elementText("phone"));contact.setEmail(element.elementText("email"));contact.setQq(element.elementText("qq"));contacts.add(contact);}return contacts;}
}

其中contact.xml如下

<?xml version="1.0" encoding="utf-8"?>
<contactList><contact id="001"><name>张三</name><age>20</age><phone>134222223333</phone><email>zhangsan@qq.com</email><qq>432221111</qq></contact><contact id="002"><name>李四</name><age>20</age><phone>134222225555</phone><email>lisi@qq.com</email><qq>432222222</qq></contact>
</contactList>


这篇关于XML-dom4j实战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1141666

相关文章

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕