DOM4J -(XML解析包)
DOM4J - 简介
是dom4j.org出品的一个开源XML解析包。Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。
DOM4J 使用起来非常简单。只要你了解基本的 XML-DOM 模型,就能使用。
Dom:把整个文档作为一个对象。
DOM4J 接口定义
它的主要接口都在org.dom4j里面定义
| Attribute | 定义了XML属性 |
| Branch | 只能够包含子节点的节点。如XML元素(Element)和文档(Document)定义了一个公共的行为 |
| CDATA | 定义了XML CDATA区域 |
| CharacterData | 是一个标识接口,标识基于字符的节点。如CDATA,Comment,Text |
| Comment | 定义了XML注释的行为 |
| Document | 定义了XML文档 |
| DocumentType | 定义XML DOCTYPE声明 |
| Element | 定义XML元素 |
| ElementHandler | 定义了Element对象的处理器 |
| ElementPath | 被ElementHandler使用,用于取得当前正在处理的路径层次信息 |
| Entity | 定义了XML entity |
| Node | 为dom4j中所有的XML节点定义了多态行为 |
| NodeFilter | 定义了在dom4j节点中产生的一个滤镜或谓词的行为(predicate) |
| ProcessingInstruction | 定义XML处理指令 |
| Text | 定义XML文本节点 |
| Visitor | 用于实现Visitor模式 |
| XPath | 在分析一个字符串后会提供一个XPath表达式 |
接口之间的继承关系如下:
● interface java.lang.Cloneable
● interface org.dom4j.Node
● interface org.dom4j.Attribute
● interface org.dom4j.
● interface org.dom4j.Document
● interface org.dom4j.Element
● interface org.dom4j.CharacterData
● interface org.dom4j.CDATA
● interface org.dom4j.Comment
● interface org.dom4j.Text
● interface org.dom4j.DocumentType
● interface org.dom4j.Entity
● interface org.dom4j.ProcessingInstruction
基本使用方式:
// 读取XML文件:创建ASXReader使用reader读取xml文件,获得Document对象:
SAXReader reader = new SAXReader();
Document document = reader.read("xml文件路径"); // 获取文档的根节点
Element root = document.getRootElement(); // 获取指定节点下的子节点
Element son_element = element.element("name"); // 获取节点的子节点集合
List<Element> elelist = element.elements();// 获取所有子节点
List<Element> son_elelist = element.elements(“name”);// 指定名称的子节点集合 // 获取节点属性的值
element.attributeValue("name"); // 获取元素内容
element.getText();
Element:定义XML元素
// 遍历所有子元素
Iterator elementIterator();// 遍历所有子元素
Iterator elementIterator("name");// 遍历指定名称子元素
Attribute:定义了XML的属性
getName();// 获取属性名
setName();// 设置属性名
getValue();// 获取属性值
setValue();// 设置属性值
getDocument();
setDocument();
DOM4J - XML文档操作
读取XML文件:读写XML文档主要依赖于org.dom4j.io包,有DOMReader和SAXReader两种方式。因为利用了相同的接口,它们的调用方式是一样的。
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));
// 读取XML文件,获得document对象
SAXReader reader = new SAXReader();
Document doucument = reader.read("src/NewFile.xml");
// 获取根节点
Element root = doucument.getRootElement();
// System.out.println(e.getName());//打印根标签名字 // 遍历xml节点,elementIterator()方法获得它的子节点的Element对象们的一个迭代器
for (Iterator<Element> it = root.elementIterator(); it.hasNext();) { Element ele = it.next();
System.out.println(ele.getName());
if (ele.getName().equals("good")) {
Element name = ele.element("name");
if (name != null)
System.out.println(" -" + name.getText());
}
// Attribute获取属性,并进行遍历
for (Iterator<Attribute> i = ele.attributeIterator(); i.hasNext();) {
Attribute a = i.next();
System.out.println(" " + a.getName() + ":" + a.getText()); }
}
创建XML文件:使用DocumentHelper创建新的document,在document下添加root元素,然后可以再root元素下创建各种节点。
Document document = DocumentHelper.createDocument();
Element root = document.addElement("members");// 创建根节点
// 建立document对象,用来操作xml文件
Document newDocument = DocumentHelper.createDocument();
// 建立根节点
Element newRoot = newDocument.addElement("root");
newRoot.addComment("This is a test for dom4j ");// 加入一行注释
// 添加一个authro1节点
Element authro1 = newRoot.addElement("authro");
// 添加属性内容
authro1.addAttribute("name", "James");
authro1.addAttribute("location", "UK");
// 添加文本节点
authro1.addText("James Strachan");
// 添加一个authro2节点
Element authro1 = newRoot.addElement("authro");
// 添加属性内容
authro1.addAttribute("name", "James");
authro1.addAttribute("location", "UK");
// 添加文本节点
authro1.addText("James Strachan");
try {
XMLWriter writer = new XMLWriter(new FileOutputStream("[路径/]filename"));
// 将Document对象写入xml文件中
writer.write(newDocument);
} catch (Exception e) {
e.printStackTrace();
} finally {
writer.close();// 关闭流
}
格式化输出Document,创建带有OutputFormat的XMLWriter可以实现对Document的格式化输出
// 排版
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new FileWriter("[path]filename"), format);
writer.write(document);// 将Document对象写入xml文件中
writer.close();// 关闭流
// 紧凑
OutputFormat format = OutputFormat.createCompactFormat();
XMLWriter writer = new XMLWriter(new FileWriter("[path]filename"), format);
writer.write(document);// 将Document对象写入xml文件中
writer.close();// 关闭流
写入XML文件中文乱码问题:http://blog.sina.com.cn/s/blog_757b0e130101dqrx.html
String xmlText = document.asXML();
DOM4J -(XML解析包)的更多相关文章
- Java XML解析工具 dom4j介绍及使用实例
Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...
- 【Java】XML解析之DOM4J
DOM4J介绍 dom4j是一个简单的开源库,用于处理XML. XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP,使用需要引用dom4j.jar包 ...
- XML解析【介绍、DOM、SAX详细说明、jaxp、dom4j、XPATH】
什么是XML解析 前面XML章节已经说了,XML被设计为"什么都不做",XML只用于组织.存储数据,除此之外的数据生成.读取.传送等等的操作都与XML本身无关! XML解析就是读取 ...
- xml之DOM方式解析,DOM4J工具解析原理
DOM解析原理: DOM解析原理:xml解析器一次性把整个xml文档加载进内存,然后在内存中构建一颗Document的对象树,通过Document对象,得到树上的节点对象,通过节点对象访问(操作)到x ...
- XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...
- java之xml解析-dom4j
解析方式 XML 解析方式有很多种,但是常用的有两种,如下: DOM Document Object Model:把整个 XML 读到内存中,形成树状结构.整个文档为 Document 对象,属性为 ...
- xml解析 使用dom4j操作xml
使用dom4j操作xml 1 导入 dom4j,的jar包 2 指定要解析的XML文件 SAXReader sr=new SAXReader(); Document document= sr.r ...
- java的XML解析(DOM4J技术)
DOM4J技术解析XML文件 一,XML简介 xml (可扩展标记语言) 全称: Extended Markup Language 可扩展的含义:允许程序员按照自己的想法去扩展新的标签 注意:但是扩 ...
- XML 解析之 dom4j 解析器
dom4j 的使用需要导入 jar 包, 包括: dom4j-1.6.1 和 jaxen-1.1-beta 步骤: 在项目目录下,"Folder" 创建一个 lib 文件夹 复制 ...
随机推荐
- vue语法糖
加冒号,就是个语法糖 两点: 例如 export default { data(){ return { item: { src: 'xxxxx' } } } } <img :src='item ...
- day22_5-xml模块
# 参考资料:# python模块(转自Yuan先生) - 狂奔__蜗牛 - 博客园# https://www.cnblogs.com/guojintao/articles/9070485.html ...
- ASP.NET的一些概念
简述实体框架(EF): EF是一种ORM工具,ORM表示对象关联映射. 在RDMS中,对象称为表格和列对象,而在.net中(面向对象)称为类,对象以及属性. EF提供了三种方式来实现项目: l 数据库 ...
- Java之RabbitMQ(一)与SpringBoot整合
应用场景:异步处理.应用解耦.流量削峰 参照:https://blog.csdn.net/weixin_38364973/article/details/82834348 开端 RabbitAutoC ...
- 04_Mybatis输入\出映射
1. 输入映射 通过paramterType指定输入参数的类型,类型可以是简单类型.hashmap.pojo的包装类. 1.1 传递pojo的包装对象 1.需求 完成用户信息的综合查询,需要传 ...
- Python对接支付宝支付自实现
Python对接支付宝支付自实现 # -*- coding: utf-8 -*- import base64 import json import urllib.parse from datetime ...
- <Python基础>python是如何进行内存管理的
.Python 是如何进行内存管理的?答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制⒈对象的引用计数机制Python 内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用 ...
- POJ - 2774~POJ - 3415 后缀数组求解公共字串问题
POJ - 2774: 题意: 求解A,B串的最长公共字串 (摘自罗穗骞的国家集训队论文): 算法分析: 字符串的任何一个子串都是这个字符串的某个后缀的前缀. 求 A 和 B 的最长 公共子串等价于求 ...
- 一个上午,勉强记住了几种不同语言编译PE的启动函数
VC:启动函数最乱,三大函数都在后面.前面8个PUSH DELPHI7:启动函数最整洁,2.3.4.2,形式排队 VB:启动函数最好记,12个0.... 汇编:三大函数距离最紧凑,除VB外,启动函数最 ...
- WebClient 上传文件 上传文件到服务器端
一直对于上传文件到服务器端困惑:以前,现在,学到了关于WebClient的post知识 瞬间对于上传文件到服务器觉得好轻松: 原理很简单:我们通过post服务器的页面:把本地的文件直接传递过去: 现在 ...