• 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解析。
  • 相关阅读:
    Java实现 蓝桥杯VIP 基础练习 完美的代价
    Java实现 蓝桥杯VIP基础练习 矩形面积交
    Java实现 蓝桥杯VIP 基础练习 完美的代价
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    核心思想:想清楚自己创业的目的(如果你没有自信提供一种更好的产品或服务,那就别做了,比如IM 电商 搜索)
    在Linux中如何利用backtrace信息解决问题
  • 原文地址:https://www.cnblogs.com/zhangminghui/p/4069393.html
Copyright © 2020-2023  润新知