Dom4J解析xml文件
发布日期:2021-07-26 18:44:05
浏览次数:15
分类:技术文章
本文共 2879 字,大约阅读时间需要 9 分钟。
(一)xml基础简介:
什么是xml?
-可扩展标记语言,根据自己的需求定义自己的标签。xml文件的作用:
-主要用来传输和存储数据。解析xml文件的方法:
-DOM、DOM4J、SAX -DOM与DOM4J:基于树结构的解析(一次性读取到内存中需要什么解析什么)。注:DOM复杂繁琐,DOM4J对DOM进行了封装,建议使用DOM4J。 -SAX:基于事件流的解析(边读边解析,不回头),适用于大的xml文件。
xml文档练习(方便后面说明):
read_student.xml :
王同 java 89 李佳 sql 58
(二)Dom4J解析
1)Dom4J常用对象:
SAXReader:读取xml文件到Document树结构文件对象。 Document:是一个xml文档对象树,类比Html文档对象。 Element:元素节点。通过Document对象可以查找单个元素。2)Dom4J解析read_student.xml步骤:
第一步:创建解析器。 第二步:得到Document对象。 第三步:获取xml根节点。 第四步:遍历解析子节点。解析read_student.xml文件
方法1:
package Test;import java.io.File;import java.util.Iterator;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class a_SAX { public static void main(String[] args) throws DocumentException{ //创建解析器 SAXReader reader =new SAXReader(); //通过解析器的read方法将配置文件读到内存中,生成一个Document[org.dom4j]对象树 Document document=reader.read(new File("conf/Student.xml")); //获取根节点 Element root=document.getRootElement(); //开始遍历根节点(迭代器) IteratorrootIter=root.elementIterator(); while(rootIter.hasNext()){ //获取root下的元素 Element e=(Element)rootIter.next(); System.out.println(e.getName()); //获取id属性 Attribute id=e.attribute("id"); System.out.println(id.getName()+"="+id.getValue()); //获取student的子元素 Element name=e.element("name"); Element course=e.element("course"); Element score=e.element("score"); System.out.println(name.getName()+"="+name.getText()); System.out.println(course.getName()+"="+course.getText()); System.out.println(score.getName()+"="+score.getText()); System.out.println("--------------------------------------------"); } }}
方法2:
package Test;import java.io.File;import java.util.Iterator;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class b_SAX { public static void main(String[] args) throws DocumentException{ //创建解析器 SAXReader reader =new SAXReader(); //通过解析器的read方法将配置文件读到内存中,生成一个Document[org.dom4j]对象树 Document document=reader.read(new File("conf/Student.xml")); //获取根节点 Element root=document.getRootElement(); //开始遍历根节点(迭代器) IteratorrootIter=root.elementIterator(); while(rootIter.hasNext()){ //获取rot下的元素 Element e=(Element)rootIter.next(); System.out.print(e.getName()+" "); //获取id属性 Attribute id=e.attribute("id"); System.out.println(id.getName()+"="+id.getValue()); //获取student的子元素 Iterator node=e.elementIterator(); while(node.hasNext()){ Element innerElt=node.next(); System.out.println(innerElt.getName()+"="+innerElt.getText()); } System.out.println("--------------------------------------------"); } }}
结果:
转载地址:https://blog.csdn.net/qq_41877184/article/details/95017336 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月10日 02时26分13秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
AI算法之Encoder-Decoder 和 Seq2Seq
2019-04-26
人体口罩佩戴检测实战
2019-04-26
[实战]200类鸟类细粒度图像分类
2019-04-26
【实战】英文垃圾短信分类
2019-04-26
FFmpeg初遇见_基本命令
2019-04-26
Urbansound8k声音分类深度学习实战
2019-04-26
pytorch版本下的yolov3训练实现火焰检测
2019-04-26
yolov4训练自己的数据集实现安全帽佩戴检测
2019-04-26
EfficientDet训练自己的数据集实现抽烟检测
2019-04-26
【工具篇】10分钟快速上手git与github
2019-04-26
【开发篇】10分钟快速上手spring boot
2019-04-26
【开发篇】10分钟快速spring boot+react前后端分离
2019-04-26
【Leetcode刷题篇】leetcode203 移除链表元素
2019-04-26
【Leetcode刷题篇】leetcode938 二叉搜索树的范围和
2019-04-26
【Java网络编程与IO流】Java中BIO、NIO、AIO的区别是什么?
2019-04-26
【Leetcode刷题篇】leetcode136 只出现一次的数字
2019-04-26
spring boot整合thymeleaf,支持JSP和HTML页面开发
2019-04-26
【面试篇】Java多线程并发-Java关键字volatile详解
2019-04-26
【Leetcode刷题篇】leetcode394 字符串解码
2019-04-26
理解String.intern()和String类常量池疑难解析例子
2019-04-26