zoukankan      html  css  js  c++  java
  • 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继承关系(借鉴网上的,感觉基本的主要类都有了)

    r_bbb

    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解析。
  • 相关阅读:
    TiDB数据库05TiDB的用户管理与安全,文件与日志管理
    Java基础知识16Arrays、System常用方法使用
    TiDB数据库07TiDB集群管理(TiDB/TiKV/PD/TiFlash在线扩容与在线缩容)
    【转】在SQL Server中创建用户角色及授权(使用SQL语句)
    Javascript的IE和Firefox兼容问题
    JavaScript的私有变量
    JavaScript 中的内存泄露模式
    javascript内存泄漏问题
    全面理解javascript的caller,callee,call,apply概念(修改版)
    javascript跨域问题
  • 原文地址:https://www.cnblogs.com/zhangminghui/p/4069393.html
Copyright © 2011-2022 走看看