美文网首页我爱编程
Dom4J5分钟入门

Dom4J5分钟入门

作者: tanoak | 来源:发表于2018-04-11 19:04 被阅读35次

    Dom4j使用

    首先我们来了解下目前主流的四种解析xml的技术

    • DOM解析
      优点:
          1.形成了树结构,有助于更好的理解、掌握,且代码容易编写。
          2.解析过程中,树结构保存在内存中,方便修改。
     缺点:
       1、由于文件是一次性读取,所以对内存的耗费比较大。
       2、如果XML文件比较大,容易影响解析性能且可能会造成内存溢出
    
    • SAX解析
    优点:
       1. 采用事件驱动模式,对内存耗费比较小。
       2. 适用于只处理XML文件中的数据时。
    缺点:
       1. 编码比较麻烦。
       2. 很难同时访问XML文件中的多处不同数据
    
    • JDOM解析
    优点:
            1是基于树的处理XML的Java API,把树加载在内存中
            2没有向下兼容的限制,因此比DOM简单
            3速度快,缺陷少
            4具有SAX的JAVA规则
        缺点:
            1不能处理大于内存的文档
            2JDOM表示XML文档逻辑模型。不能保证每个字节真正变换。
            3针对实例文档不提供DTD与模式的任何实际模型。
            4不支持与DOM中相应遍历包
    
    

    今天的主角Dom4j

    特征   
         1、JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能。
         2、它使用接口和抽象基本类方法。
         3、具有性能优异、灵活性好、功能强大和极端易用的特点。
    

    pom

           <dependency>  
            <groupId>dom4j</groupId>  
            <artifactId>dom4j</artifactId>  
            <version>1.6.1</version>  
        </dependency> 
    

    接下来我们来了解下Dom4j的常用API,要想深入了解DOM4J API,请进入传送门

    从DOM4J的API可以迅速的上手


    总览

    废话不多说,开始Demo ps:这是字符串形式的XML

    
    String XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
    "<response><status>1</status><info>OK</info><infocode>10000</infocode><regeocode><formatted_address>XXX省XXX市XXX区XXX处</formatted_address><addressComponent><country>中国</country><province>XXX省</province><city>XXX市</city><citycode>0791</citycode><district>XXX区</district><adcode>360111</adcode><township>XXX处</township><towncode>360111482000</towncode><neighborhood><name></name><type></type></neighborhood><building><name></name><type></type></building><streetNumber><street></street><number></number><direction></direction><distance></distance></streetNumber><businessAreas type=\"list\"><businessArea/></businessAreas></addressComponent><pois type=\"list\"/><roads type=\"list\"/><roadinters type=\"list\"/><aois type=\"list\"/></regeocode></response>";
    
    
    public String toSub(String str) throws DocumentException {
        Document doc = DocumentHelper.parseText(str) ;//从字符串中读取xml
        Element rootElt = doc.getRootElement(); // 获取根节点
        List first = rootElt.elements();
        for (Iterator<?> its = first.iterator(); its.hasNext();) {
            Element e = (Element) its.next();
            List   second = e.elements();
            for (Iterator<?> it = second.iterator(); it.hasNext();) {
                Element t = (Element) it.next();
                return t.getText() ;
            }
        }
        return null ;
    }
    
    //从本地加载采用
     Document document = saxReader.read(new File("src/fileName.xml"));  
        Element ele = document.getRootElement(); 
    
    

    运行这个Demo,可以让你对Dom4j有初步的熟悉
    针对各个接口的详细使用,推荐一篇博文传送门

    相关文章

      网友评论

        本文标题:Dom4J5分钟入门

        本文链接:https://www.haomeiwen.com/subject/gzvzhftx.html