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

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

intellij idea generatorConfig.xml

generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-ge

springboot实战学习(1)(开发模式与环境)

目录 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 (3)前端 二、开发模式 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 Validation:做参数校验Mybatis:做数据库的操作Redis:做缓存Junit:单元测试项目部署:springboot项目部署相关的知识 (3)前端 Vite:Vue项目的脚手架Router:路由Pina:状态管理Eleme

深度学习实战:如何利用CNN实现人脸识别考勤系统

1. 何为CNN及其在人脸识别中的应用 卷积神经网络(CNN)是深度学习中的核心技术之一,擅长处理图像数据。CNN通过卷积层提取图像的局部特征,在人脸识别领域尤其适用。CNN的多个层次可以逐步提取面部的特征,最终实现精确的身份识别。对于考勤系统而言,CNN可以自动从摄像头捕捉的视频流中检测并识别出员工的面部。 我们在该项目中采用了 RetinaFace 模型,它基于CNN的结构实现高效、精准的

项目实战系列三: 家居购项目 第四部分

购物车 🌳购物车🍆显示购物车🍆更改商品数量🍆清空购物车&&删除商品 🌳生成订单 🌳购物车 需求分析 1.会员登陆后, 可以添加家居到购物车 2.完成购物车的设计和实现 3.每添加一个家居,购物车的数量+1, 并显示 程序框架图 1.新建src/com/zzw/furns/entity/CartItem.java, CartItem-家居项模型 /***

Birt报表开发实战

我就截图描述得了,没什么含金量,看图基本明白的。 1.开始 a.创建报表文件 b.数据源配置 c.配置数据集 2.网格报表 拖拉式操作,很方便 3.预览效果 其他报表的操作也基本不难,就不扯了! 2.级联参数 官方视频教程:http://demo.actuate.com/demos/cascade/cascade.html

xml概论

以下内容摘录自W3School 一、XML的特性 xml是用来传输和存储数据的,本身对数据没有任何操作。在这里要区别一下html,html是用来显示数据的。xml的焦点是数据内容,html的焦点是数据外观。 下面是xml的定义: •XML 指可扩展标记语言(EXtensible Markup Language) •XML 是一种标记语言,很类似 HTML