XML解析之dom4j

一、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<Element> 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 = "<members> <member>sitinspring</member></members>";
                     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();
时间: 2024-10-10 11:08:00

XML解析之dom4j的相关文章

XML——XML解析之DOM4J

首先为什么会有Dom4j呢? 因为DOM太耗内存,而SAX只能对XML进行读取,而不能去添加.删除等.所以出现了Dom4j,它的效率更高,同时也可以进行crud操作. 1.DOM4J介绍 Dom4j是一个简单.灵活地开放源代码的库.Dom4j是由早期开发JDOM的人分离出来而后独立开发的.与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性. Dom4j是一个非常优秀的Java XML API,具有性能优异.功能强大和极易使用的

XML解析器——DOM4j

4)DOM4J http://dom4j.sourceforge.net 虽然DOM4J代表了完全独立的开发结果,但最初,它是JDOM的一种智能分支.它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持.XML Schema支持以及用于大文档或流化文档的基于事件的处理.它还提供了构建文档表示的选项,它通过DOM4J API和标准DOM接口具有并行访问功能.从2000下半年开始,它就一直处于开发之中. 为支持所有这些功能,DOM4J使用接口和抽象基本类方法.DOM4J大量使用了API

DOM综合案例、SAX解析、StAX解析、DOM4J解析

今日大纲 1.DOM技术对xml的增删操作 2.使用DOM技术完成联系人管理 3.SAX和StAX解析 4.DOM4J解析 5.XPATH介绍 1.DOM的增删操作 1.1.DOM的增加操作 /* * 演示使用dom技术给xml中添加标签 * <book> <name id="b001">SSH</name> <author>老于</author> <price>152</price> </boo

XML系列:(6)XML解析-Dom4j的DOM解析方式读取XML

Dom4j工具,是非官方的,不在jdk中. 使用步骤: 1)导入dom4j的核心包. dom4j-1.6.1.jar 2)编写Dom4j读取xml文件的代码 animals.xml <?xml version="1.0" encoding="UTF-8"?> <Animals> <Cat id="c001" name="喵喵"> <Home>火星</Home> <

XML系列:(7)XML解析-Dom4j的DOM解析方式更新XML

Dom4j工具,是非官方的,不在jdk中. 使用步骤: 1)导入dom4j的核心包. dom4j-1.6.1.jar 2)编写Dom4j读取xml文件的代码 1.更新XML 1.1.写出内容到xml文档 package com.rk.xml.g_dom4j_write; import java.io.File; import java.io.FileOutputStream; import org.dom4j.Document; import org.dom4j.io.SAXReader; im

xml解析-dom4j(比较流行,第三方提供)

需要导入dom4j的包,以提供dom4j的支持. package day06_parser.dom4j; /**dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的 DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the J

java xml解析方式(DOM、SAX、JDOM、DOM4J)

XML值可扩展标记语言,是用来传输和存储数据的. XMl的特定: XMl文档必须包含根元素.该元素是所有其他元素的父元素.XML文档中的元素形成了一颗文档树,树中的每个元素都可存在子元素. 所有XML元素都必须有关闭标签. XML标签对大小写敏感,并且所有属性值date都需加引号. XML元素: XMl元素是只从包括开始标签到结束标签的部分,元素可包含其他元素.文本或两者都包含,也可拥有属性. XML解析 基础方法:DOM.SAX DOM解析:平台无关的官方解析方式 SAX解析:Java中基于事

XML解析器之JAXP与DOM4J

XML是一种数据格式,那么需要对XML文件进行操作就需要用到XML解析器---------针对dom方式和sax方式提供了不同的解析技术-----需要不同的XML解析器 dom方式:会把文档中所有元素(标签),根据xml的层级结构,解析成各个Node对象(节点).在内存中分配一个树形结构,把xml的标签,属性和文本都封装成对象 缺点:如果文件过大,造成内存溢出. 优点:树结构,容易遍历和实现增删改. sax方式:采用事件驱动,边读边解析,解析到某一个对象,返回对象名称,可以由用户自己建立自己的对

JAVASE02-Unit012: Unit07: XML语法 、 XML解析

Unit07: XML语法 . XML解析 emplist.xml <?xml version="1.0" encoding="UTF-8"?> <list> <emp id="1"> <name>张三</name> <age>34</age> <gender>男</gender> <salary>3000</salary