XML文件解析之DOM4J解析
1.DOM4J介绍
dom4j的官网是http://www.dom4j.org/dom4j-1.6.1/,最新的版本是1.6.1,根据官网介绍可知。dom4j是一个易用的、开源的库,应用于Java平台XML、XPath、和XSLT,并且提供了对DOM、SAX和JAXP的完全支持。主要功能包括针对Java平台设计完成支持Java的集合框架;完全的支持JAXP, TrAX, SAX, DOM, and XSLT;为XML文档的简单导航完全集成的XPath支持;基于事件的过程模式完全支持大量的文档或者是XML流;基于Java接口,更加灵活容易扩展和实现;支持XML Schema数据类型支持使用Kohsuke更加优于多模式验证器库
2.主要的包
org.dom4j :在Java接口定义了XML文档对象模型并且定义了帮助类。
org.dom4j.bean :dom4j API的实现,允许使用Javabean去存储和检索元素中的数据
org.dom4j.datatype:实现了dom4j API, 提供了对XML Schema Data Types 规范
org.dom4j.dom :实现了dom4j API,提供了对W3C对象模型的支持
org.dom4j.io :当把dom4j 对象写成XML文本流的时候提供了通过DOM和SAX方法的输入输出
org.dom4j.jaxb :其他
org.dom4j.rule :在模式匹配的时允许操作生效时相关的基于实现了完整的XSLT过程模式的XML规则引擎的模式
org.dom4j.rule.pattern:规则的相关匹配模式
org.dom4j.swing:使用树模式或者表格模式时使用的允许方便和dom4j文档和Swing进行整合的适配器集合
org.dom4j.tree :包含了缺省的dom4j对象模型的实现,同时还有一些实现了自己的文档对象模型的有用的基础类
org.dom4j.util:工具类
org.dom4j.xpath:提供了使用XPath库的所需要的核心工具
org.dom4j.xpp:提供了用XMLXPP解析器和dom4j整合在一起所需要的实现类
3.主要的对象
Attribute:Attribute定义了XML的属性
Branch:Branch为能够包含子节点的节点如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为,
CDATA:CDATA 定义了XML CDATA 区域
CharacterData:CharacterData是一个标识借口,标识基于字符的节点。如CDATA,Comment, Text.
Comment:Comment 定义了XML注释的行为
Document:定义了XML文档
DocumentType:DocumentType 定义XML DOCTYPE声明
Element:Element定义XML 元素
ElementHandler:ElementHandler定义了 Element 对象的处理器
ElementPath:被 ElementHandler 使用,用于取得当前正在处理的路径层次信息
Entity:Entity定义 XML entity
Node:Node为所有的dom4j中XML节点定义了多态行为
NodeFilter:NodeFilter 定义了在dom4j节点中产生的一个滤镜或谓词的行为(predicate)
ProcessingInstruction:ProcessingInstruction 定义 XML 处理指令.
Text:Text 定义XML 文本节点.
Visitor:Visitor 用于实现Visitor模式.
XPath:XPath 在分析一个字符串后会提供一个XPath 表达式
4.DOM4J继承关系(借鉴网上的,感觉基本的主要类都有了)

5.实现代码,读入文件并且输出
import java.io.File;
import java.util.Iterator; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; /**
*/
public class Dom4jParse { public static void main(String[] args) throws DocumentException { //获取document对象
SAXReader reader = new SAXReader();
Document document = reader.read(new File("world.xml"));
printXmlOut(document.asXML()); } /**
* @description 解析XML文件并输出内容
* @param xml
*/
public static void printXmlOut(String xml) {
Document doc = null;
try {
// 将字符串转为XML对象
doc = DocumentHelper.parseText(xml);
Element rootElt = doc.getRootElement();
System.out.println("根节点:" + rootElt.getName());
// 获取根节点下的子节点head
Iterator iter = rootElt.elementIterator("comuntry");
// 遍历head节点
while (iter.hasNext()) { Element element = (Element) iter.next();
String name = element.elementTextTrim("name");
String capital = element.elementTextTrim("capital");
String population = element.elementTextTrim("population");
String area = element.elementTextTrim("area");
System.out.println("id:" + element.attributeValue("id"));
System.out.println("name:" + name);
System.out.println("capital:" + capital);
System.out.println("population:" + population);
System.out.println("area:" + area);
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
} }
输出结果:
根节点:world
id:1
name:China
capital:Beijing
population:1234
area:960
id:2
name:America
capital:Washington
population:234
area:900
id:3
name:Japan
capital:Tokyo
population:234
area:60
id:4
name:Russia
capital:Moscow
population:34
area:1960
6.以上就是DOM4J解析的相关知识点,下面接着介绍JDOM解析。
XML文件解析之DOM4J解析的更多相关文章
- 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来 ...
- XML文件的创建和解析笔记
解析XML的四种方法 XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这 ...
- 源生API解析XML文档与dom4j解析XML文档
一.XML语言 XML是一种可扩展的标记语言,是一种强类型的语言,类似HTML(超文本标记语言,是一种弱类型的语言).XML是一种通用的数据交换格式(关系型数据库),综上所诉:XML可以传输数据,也可 ...
- XML 解析之 dom4j 解析器
dom4j 的使用需要导入 jar 包, 包括: dom4j-1.6.1 和 jaxen-1.1-beta 步骤: 在项目目录下,"Folder" 创建一个 lib 文件夹 复制 ...
- java解析xml字符串为实体(dom4j解析)
package com.smsServer.Dhst; import java.util.HashMap; import java.util.Iterator; import java.util.Ma ...
- xml文件的生成与解析
生成方法一:同事StringBuffer类对xml文件格式解析写入 package com.steel_rocky.xml; import android.app.Activity; import a ...
- 使用XML序列化器生成XML文件和利用pull解析XML文件
首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...
- 解析XML文件之使用SAM解析器
XML是一种常见的传输数据方式,所以在开发中,我们会遇到对XML文件进行解析的时候,本篇主要介绍使用SAM解析器,对XML文件进行解析. SAX解析器的长处是显而易见的.那就是SAX并不须要将全部的文 ...
- XML文件详解以及解析
转自:https://blog.csdn.net/com_ma/article/details/73277535 一.xml基础详解: 1.概述: xml:即可扩展标记语言,xml是互联网数据传输的重 ...
随机推荐
- 重置密码解决MySQL for Linux
重置密码解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor ...
- 测试理论03-svn-缺陷及报告-jira
回顾--用例设计方法 边界值(三个点,使用步骤) 判定表(适用,四个组成部分,规则,使用) 因果图(适用,四个符号,使用) 正交表(定义,特性,L_n(m^k),因素,水平,使用,工具allpairs ...
- Node.js使用MySQL连接池示例
下面是一个封装好的工具类: var fs = require('fs'); var mysql = require('mysql'); var pool = mysql.createPool({ ho ...
- 树莓派连接显示器后设置ssh服务开机自动开启
进入命令行,然后执行: cd /boot sudo touch ssh sudo restart -r now 然后就重新启动了,重启好了会有依据提示. 然后可以输入ssh localhost进行一下 ...
- Vue-cli中的安装方法
vue-cli脚手架模板是基于node下的npm来完成安装的所以首先需要安装node 1.安装node,vue运行需要基于npm一定的版本,所以首先升级npm到最新的版本,而在安装的过程中个人比较喜欢 ...
- 粒子系统与雨的效果 (DirectX11 with Windows SDK)
前言 最近在学粒子系统,看这之前的<<3D图形编程基础 基于DirectX 11 >>是基于Direct SDK的,而DXSDK微软已经很久没有更新过了并且我学的DX11是用W ...
- CenOS 7 java链接redis数据库
完整代码 public class App { public static void main(String[] args) { System.out.println("Hello Worl ...
- [转帖]PostgreSQL 昨天,今天和明天
PostgreSQL 昨天,今天和明天 http://www.postgres.cn/v2/news/viewone/1/52 原作者:何伟平(laser) 创作时间:2005-01-15 11:44 ...
- 在Settings.db数据库中添加一项新的设置(Settings默认设置)
Settiings的数据默认存放在com.android.providers.settings/database/settings.db中 数据库中的默认数据在frameworks/base/pack ...
- Ettercap 帮助文档
Ettercap(8)帮助 (翻译来自百度翻译,原文附于文后,个人润色) 1.概述 Ettercap-多用途嗅探器/内容过滤器,用于中间人攻击 重要提示 自Ettercap Ng(以前为0.7.0)以 ...