热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

XML解析之dom4j

一、XML解析方式有两类:一】DOM(文档对象模型)1)一次性将整个XML文件读到内存,形成一颗DOM树二】SAX(XML的简单API)[simpleAPIforXML]1)SAX

一、XML解析方式有两类:
        一】DOM(文档对象模型)
            1)一次性将整个XML文件读到内存,形成一颗DOM树
        二】SAX(XML的简单API)[simple API for XML]
            1)SAX多次将XML文件的每部分读到内存

二、步骤:

  一】利用SAXReader类获取Document对象

        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(new File("src/com/suse/simpledom4j/car.xml"));

  二】通过Document获取元素和属性

    常用方法: 

              得到子元素的List集合:     List       elements()
              得到元素的名称:           String     getName()
              得到指定子元素引用:        Element    element("子元素名称");
              得到子元素封装的信息:      String     elementText("子元素名称");
              得到元素的属性值:         String      attributeValue("属性名");
              添加一个子元素:           Element     addElement("子元素名称");
              设置元素封装的信息:       void        setText("封装的信息");
              删除一个子元素:          boolean     remove(子元素引用);
              将元素转换成字符串:       String      asXML();

   三】通过XMLWriter类将内存中的XML文件回写到硬盘上

    常用类及方法:

       1)OutputFormat对象:制定流的输出时在文档中的显示格式
                常用方法:
                        返回一个优美的格式器对象:static OutputFormat createPrettyPrint();
          2) XMLWriter流对象:用于将内存中的XML文件输出到硬盘上
                构造方法:
                            XMLWriter(输出流)
                常用方法:
                            将内存中的XML写入到硬盘上:void writer(Document document);
                            关闭流:void close();

三、对XML文件进行增删改查

  code:

    private Document getDocument() throws Exception {
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(new File("src/com/suse/simpledom4j/car.xml"));
        return document;
    }
    
    
    @Test
    public void add() throws Exception {
        Document document = getDocument();
        Element element = document.getRootElement();
        Element carElement = (Element) element.elements().get(0);
        Element priceElement = carElement.addElement("价格");
        priceElement.setText("20万");
        
        doc2XML(document);
    }
    
    @Test
    public void delete() throws Exception {
        Document document = getDocument();
        Element element = document.getRootElement();
        List elmentList = element.elements();

        Element carElement = elmentList.get(0);
        Element priceElement = carElement.element("价格");
        
        carElement.remove(priceElement);
        
        doc2XML(document);
    }
    
    @Test
    public void update() throws Exception {
        Document document = getDocument();
        Element rootElement = document.getRootElement();
        Element carElement  = (Element) rootElement.elements().get(0);
        
        carElement.element("价格").setText("60万元");
    
        doc2XML(document);
    }
    
    @Test
    public void select() throws Exception {
        Document document = getDocument();
        Element rootElement = document.getRootElement();
        
        Element carElement = (Element) rootElement.elements().get(0);
        String price = carElement.element("价格").getTextTrim();
        System.out.println("价格为:" + price);
    }
    
    
    private void doc2XML(Document doc) throws Exception {
        
        //得到一个格式优美的格式输出器
        OutputFormat outputFormat = OutputFormat.createPrettyPrint();
        
        
        File file = new File("src/com/suse/simpledom4j/car.xml");
        XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(file), outputFormat);
        
        
        xmlWriter.write(doc);
        xmlWriter.close();
        
        
    }

四、其它API

 一】 DocumentHelper对象:   

          static Document createDocument();//创建一个Document对象
          
static Element createElement("元素名");//创建一个元素,并返回此元素的子类【注:可以使用】 static Document parseText("符合XML格式的字符串");//创建一个document对象并返回
        
              

  二】在指定位置插入节点元素
              ----通过List集合的add(index,E)方法
          方法原型:
                void add(int index, E element);

  三】字符串与XML文件的转换

    1)字符串  --->    XML
                通过parseText方法
                eg:

             String text = " sitinspring";
                     Document dDocument = DocumentHelper.parseText(text);


        2)XML   --->        字符串
                通过asXML方法:Document、和Element对象都具有此方法
                eg:

                     SAXReader reader = new SAXReader();
                     Document document = reader.read(new File("input.xml"));
                     Element rootElement = docuemnt.getRootElement();
                     Element memberElement = root.element("member");
                    
                     String str_doc = document.saXML();
                     String str_rootEle = rootElement.asXML();
                     String str_memberEle = memberElement.asXML();

 

XML解析之dom4j


推荐阅读
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
author-avatar
手机用户2502939543
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有