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.主要的包

  1. org.dom4j :在Java接口定义了XML文档对象模型并且定义了帮助类。
  2. org.dom4j.bean dom4j API的实现,允许使用Javabean去存储和检索元素中的数据
  3. org.dom4j.datatype:实现了dom4j API, 提供了对XML Schema Data Types 规范
  4. org.dom4j.dom :实现了dom4j API,提供了对W3C对象模型的支持
  1. org.dom4j.io :当把dom4j 对象写成XML文本流的时候提供了通过DOMSAX方法的输入输出
  2. org.dom4j.jaxb :其他
  3. org.dom4j.rule :在模式匹配的时允许操作生效时相关的基于实现了完整的XSLT过程模式的XML规则引擎的模式
  4. org.dom4j.rule.pattern:规则的相关匹配模式
  5. org.dom4j.swing:使用树模式或者表格模式时使用的允许方便和dom4j文档和Swing进行整合的适配器集合
  6. org.dom4j.tree :包含了缺省的dom4j对象模型的实现,同时还有一些实现了自己的文档对象模型的有用的基础类
  7. org.dom4j.util:工具类
  8. org.dom4j.xpath:提供了使用XPath库的所需要的核心工具
  9. org.dom4j.xpp:提供了用XMLXPP解析器和dom4j整合在一起所需要的实现类

3.主要的对象

  1. AttributeAttribute定义了XML的属性
  2. BranchBranch为能够包含子节点的节点如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为,
  3. CDATACDATA 定义了XML CDATA 区域
  4. CharacterDataCharacterData是一个标识借口,标识基于字符的节点。如CDATAComment, Text.
  5. CommentComment 定义了XML注释的行为
  6. Document:定义了XML文档
  7. DocumentTypeDocumentType 定义XML DOCTYPE声明
  8. ElementElement定义XML 元素
  9. ElementHandlerElementHandler定义了 Element 对象的处理器
  10. ElementPath:被 ElementHandler 使用,用于取得当前正在处理的路径层次信息
  11. EntityEntity定义 XML entity
  12. NodeNode为所有的dom4jXML节点定义了多态行为
  13. NodeFilterNodeFilter 定义了在dom4j节点中产生的一个滤镜或谓词的行为(predicate
  14. ProcessingInstructionProcessingInstruction 定义 XML 处理指令.
  15. Text:Text 定义XML 文本节点.
  16. Visitor:Visitor 用于实现Visitor模式.
  17. XPath:XPath 在分析一个字符串后会提供一个XPath 表达式

4.DOM4J继承关系(借鉴网上的,感觉基本的主要类都有了)

5.实现代码,读入文件并且输出

  1. import java.io.File;
  2. import java.util.Iterator;
  3.  
  4. import org.dom4j.Document;
  5. import org.dom4j.DocumentException;
  6. import org.dom4j.DocumentHelper;
  7. import org.dom4j.Element;
  8. import org.dom4j.io.SAXReader;
  9.  
  10. /**
  11. */
  12. public class Dom4jParse {
  13.  
  14. public static void main(String[] args) throws DocumentException {
  15.  
  16. //获取document对象
  17. SAXReader reader = new SAXReader();
  18. Document document = reader.read(new File("world.xml"));
  19. printXmlOut(document.asXML());
  20.  
  21. }
  22.  
  23. /**
  24. * @description 解析XML文件并输出内容
  25. * @param xml
  26. */
  27. public static void printXmlOut(String xml) {
  28. Document doc = null;
  29. try {
  30. // 将字符串转为XML对象
  31. doc = DocumentHelper.parseText(xml);
  32. Element rootElt = doc.getRootElement();
  33. System.out.println("根节点:" + rootElt.getName());
  34. // 获取根节点下的子节点head
  35. Iterator iter = rootElt.elementIterator("comuntry");
  36. // 遍历head节点
  37. while (iter.hasNext()) {
  38.  
  39. Element element = (Element) iter.next();
  40. String name = element.elementTextTrim("name");
  41. String capital = element.elementTextTrim("capital");
  42. String population = element.elementTextTrim("population");
  43. String area = element.elementTextTrim("area");
  44. System.out.println("id:" + element.attributeValue("id"));
  45. System.out.println("name:" + name);
  46. System.out.println("capital:" + capital);
  47. System.out.println("population:" + population);
  48. System.out.println("area:" + area);
  49. }
  50. } catch (DocumentException e) {
  51. e.printStackTrace();
  52. } catch (Exception e) {
  53. e.printStackTrace();
  54. }
  55. }
  56.  
  57. }

输出结果:

  1. 根节点:world
  2. id:1
  3. name:China
  4. capital:Beijing
  5. population:1234
  6. area:960
  7. id:2
  8. name:America
  9. capital:Washington
  10. population:234
  11. area:900
  12. id:3
  13. name:Japan
  14. capital:Tokyo
  15. population:234
  16. area:60
  17. id:4
  18. name:Russia
  19. capital:Moscow
  20. population:34
  21. area:1960

6.以上就是DOM4J解析的相关知识点,下面接着介绍JDOM解析。

XML文件解析之DOM4J解析的更多相关文章

  1. 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来 ...

  2. XML文件的创建和解析笔记

    解析XML的四种方法 XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这 ...

  3. 源生API解析XML文档与dom4j解析XML文档

    一.XML语言 XML是一种可扩展的标记语言,是一种强类型的语言,类似HTML(超文本标记语言,是一种弱类型的语言).XML是一种通用的数据交换格式(关系型数据库),综上所诉:XML可以传输数据,也可 ...

  4. XML 解析之 dom4j 解析器

    dom4j 的使用需要导入 jar 包, 包括: dom4j-1.6.1 和 jaxen-1.1-beta 步骤: 在项目目录下,"Folder" 创建一个 lib 文件夹 复制 ...

  5. java解析xml字符串为实体(dom4j解析)

    package com.smsServer.Dhst; import java.util.HashMap; import java.util.Iterator; import java.util.Ma ...

  6. xml文件的生成与解析

    生成方法一:同事StringBuffer类对xml文件格式解析写入 package com.steel_rocky.xml; import android.app.Activity; import a ...

  7. 使用XML序列化器生成XML文件和利用pull解析XML文件

    首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...

  8. 解析XML文件之使用SAM解析器

    XML是一种常见的传输数据方式,所以在开发中,我们会遇到对XML文件进行解析的时候,本篇主要介绍使用SAM解析器,对XML文件进行解析. SAX解析器的长处是显而易见的.那就是SAX并不须要将全部的文 ...

  9. XML文件详解以及解析

    转自:https://blog.csdn.net/com_ma/article/details/73277535 一.xml基础详解: 1.概述: xml:即可扩展标记语言,xml是互联网数据传输的重 ...

随机推荐

  1. QML使用C++对象

    一.定义QObject子类 Myudp.h #ifndef MYUDP_H #define MYUDP_H #include <QObject> #include <QUdpSock ...

  2. python基础之面向对象(二)

    一点提醒 首先在使用pickle读取load时,需要先把使用到的类import上,否则会报错.在pycharm中使用时不会报错,但在linux或者cmd时就会报错!必须import. 报错提示: Fi ...

  3. python 基础之确认文件是否存在

    def check_exist_bills(): file_dir=os.listdir('../db') bills_db_list=[] for item in file_dir: if item ...

  4. 手写C++代码实现POST传输数据

    char *pHttpPost = "POST %s HTTP/1.1\r\n" "Host: %s:%d\r\n" "Content-Type: a ...

  5. MMC.EXE应用程序错误 应用程序无法正常启动(0XC0000043)

    一.Windows+R 输入 regedit.exe ①打开注册表: HKEY_LOCAL_MACHINE“"SOFTWARE""Classes""C ...

  6. 解决移动端1px的问题,设备像素比devicePixelRatio的应用

    本文主要针对移动端1物理像素问题展开 解决这个问题先要了解一下概念: CSS像素(CSS Pixel):(通俗说:样式中写的值)就是我们在样式代码中常写的逻辑像素,是一个抽象概念,实际并不存在 设备独 ...

  7. 解决安装eclipse时出现"Failed to load JNI shared library"

    下午远程帮别人弄了很久的eclipse,安装时老是出现如图的字样 最后在安装配置文件中找到问题所在,这个最新版本的eclipse需要jdk1.8的环境,由于系统的jdk是1.7,版本过低从而导致安装失 ...

  8. Linux内核编译、安装流程

    原文链接:https://blog.csdn.net/qq_28437139/article/details/83692907 此处只讲linux内核编译步骤至于安装虚拟机,安装ubuntu操作系统请 ...

  9. mysql5.6版本数据库向Mysql5.7版本的数据库更新数据

    timestamp 类型不允许 timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 创建表的是后会报异常,解决方法是: 在my.cnf文件里面假如: s ...

  10. C# 自定义特性(Attribute)详解

    什么是特性 特性的定义:公共语言运行时允许添加类似关键字的描述声明,叫做attribute,它对程序中的元素进行标注,如类型.字段.方法.和属性等.attribute和.NetFramework文件的 ...