`
ganjuelovejava
  • 浏览: 94910 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

dom4j

XML 
阅读更多
前提:需要将dom4j-1.6.1.jar包加入到工程(WEB-INF\lib路径下)。

★     Document对象
1、  读取XML文件,形成Document对象:
         SAXReader reader = new SAXReader() ;
         Document doc = reader.read(new File(“input.xml”)) ;

2、  解析XML文本,得到Document对象:
         String text = “<members></members>” ;
         Document doc = DocumentHelper.parseText(text) ;

3、  主动创建:
         Document doc = DocumentHelper.createDocument() ;
         Element root = doc.addElement(“members”) ; //创建根节点;

总结:SAXReader接口:读取已经存在的XML文件;
         一个方法read():读取文件形成Document对象。
             DocumentHelper接口:分析程序中XML形式的文本或主动创建Document对象;
                 parseText():解析现有的XML文本段并生产Document对象;
                 createDocument():创建一个Document对象。
★     节点实际上是元素吧
学习节点的操作前应该明白两点:节点是在Document对象的基础上进行操作的;
节点分为根节点和普通节点。要进行操作先要获得根节点(root)。
1、  对于根节点
获得节点:getRootElement() ;

2、  对于一般节点
取得某节点的子节点:
         Element child = root.element(“members”) ; //取得名为members的节点;
取得节点的文字:
         String text = child.getText() ; //child是上述取出的节点名;
或者使用下述方法:
   root.elementText(“name”) ; //取得节点名称为name的文本;

3、  遍历
·取得某个节点下的名为“member”的所有节点:
         List nodes = rootElm.elements(“member”) ;
         for(Iterator it = nodes.iterator();it.hasNext();){Element elm = (Element)it.next() ;}
·对某节点下的所有子节点的遍历
         for(Iterator it = root.elementIterator();it.hasNext();){
   Element elm = (Element)it.next() ;
}
两个程序段中,rootElm(document.getRootElement()得到)与root是一回事吗?

4、  节点的增删
·增加节点
         Element newChild = existParent.addElement(“name”) ;
·增加节点的文字
         newChild.setText(“lsl”) ;
·删除节点
         parentElm.remove(childElm) ;

★     属性
1、  取得某个节点的属性
         Element root = document.getRootElement() ;
         Attribute attr = root.attribute(“size”) ;

2、  取得属性的文字
         String text = attr.getText() ;
也可用下面的方法
         //取得根节点下name子节点的属性firstname的值
String text = root.element(“name”).attributeValue(“firstname”) ;

3、  遍历
         Element root = document.getRootElement() ;
         for(Iterator it = root.attributeIterator();it.hasNext();){
   Attribute attr = (Attribute)it.next() ;
   String text = attr.getText() ;
}

4、  增删
·增加属性
         newElm.addAttribute(“name”,”lsl”) ;//给新阶段添加新属性name值为lsl;
·只增加属性的值
         Attribute attr = root.attribute(“name”) ;//取得已存在的属性name;
         attr.setText(“lsl”) ; //将值设为lsl
·删除属性
         Attribute attr = root.attribute(“size”) ; //取得一个已存在的属性
         root.remove(attr) ; //删除属性
通过对节点和属性的学习可以看出,对XML的操作基本上是 XML文件à document对象à root(根节点)。对于节点和属性的增删操作都是在root上进行的。

★     将文档写入XML文件
1、  不需要设置格式,直接输出
         XMLWriter writer = new XMLWriter(new FileWriter(“output.xml”)) ;
         writer.write(document) ;
         writer.close() ;

2、  当需要设置编码时,用到OutputFormat类
         OutputFormat format = OutputFormat.createPrettyPrint() ;
         format.setEncoding(“GBK”) ; //设置编码格式

         XMLWriter writer = new XMLWriter(new FileWriter(“output.xml”),format) ;
         … …


★     字符串与XML的转换
1.     将字符串转化为XML
       String text = “<members><member>sitinspring</member></members>” ;
                 Document document = DocumentHelper.parseText(text);

2.     将文档或节点的XML转化为字符串
       SAXReader reader = new SAXReader();
       Document   document = reader.read(new File("input.xml"));            
       Element root=document.getRootElement();                
       String docXmlText=document.asXML();
       String rootXmlText=root.asXML();
       Element memberElm=root.element("member");
       String memberXmlText=memberElm.asXML();

★     实例代码
1、  创建XML(CreatXML.java)
package com.dom4j.lsl;

import java.io.File;
import java.io.FileWriter;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class CreateXML {

       /**
         * @param args
         */
       public void createXML(String filename) {
         //Create the Documetn object;
         Document doc = DocumentHelper.createDocument() ;
         //add the root element
         Element books = doc.addElement("BOOKS") ;
         //add comments
         books.addComment("这是一个关于Dom4j的测试程序,用于生成一个XML文件") ;
        
         //add the first child element
         Element book = books.addElement("BOOK") ;
         //add attribute
         book.addAttribute("show","yes") ;
         Element title = book.addElement("TITLE") ;
         //add the text
         title.setText("玉女心经") ;
        
         Element owner = books.addElement("OWNER") ;
        
         try{
             OutputFormat format = OutputFormat.createPrettyPrint() ;
            
             XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)),format) ;
             writer.write(doc) ;
             writer.close() ;
         }catch(Exception e){
             e.printStackTrace() ;
         }
        
       }
       public static void main(String[] args) {
         // TODO Auto-generated method stub
         //Output the XML file
         CreateXML cx = new CreateXML() ;
         cx.createXML("E://test.xml") ;
       }

}

2、  解析XML(ParseXML.java)
package com.dom4j.lsl;

import java.io.File;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class ParseXML {

       /**
         * @param args
         * @throws DocumentException
         *
         * 用于试验的文件如下:
         * -------------------
         * <?xml version="1.0" encoding="UTF-8"?>
         *<BOOKS>
         *   <BOOK show="yes">
         *     <TITLE>AAA</TITLE>
         *   </BOOK>
         *   <OWNER/>
*</BOOKS>
         *--------------------
         */
       public static void main(String[] args) throws DocumentException {
         /**
         * 关于 Element 的测试;
         *
         * getRootElemt()   获得 根节点
         * elementText()   父节点调用,返回子节点的内容 等同于getText()方法
         * element(arg)   获取 arg 指定的节点
         */
         SAXReader reader = new SAXReader() ;
         Document doc = reader.read(new File("E://test.xml")) ;
         Element root = doc.getRootElement() ;
         Element child = root.element("BOOK") ;
         Element gradChild = child.element("TITLE") ;
         /**
         * 元素只能由其父元素调用element()方法得到,不能隔代选取
         * 如下是错误的
         * Element gradChild1 = root.element("TITLE") ;
         * 而如下语句
         * String gradChildText = root.elementText("TITLE") ;
         * 则返回null,不报错.
         */
                
         //测试方法elementText();
         String gradChildText = child.elementText("TITLE") ;
         String gradChildText1 = gradChild.asXML();  
         String gradChildText2 = gradChild.getText() ;
         /**
         * 以下用于 Attribute 的测试;
         *
         * attribute()   获取属性对象
         * arributeValue(arg)   获取arg指示的属性的值 类似与eleentText()吧
         * asXML()   将 节点或属性 转换成可以输出的字符串形式;
         * getText() 获取属性或节点的值;
         */
         Attribute childAttr = child.attribute("show") ;
         String attrText = childAttr.asXML() ;
         String attrText1 = childAttr.getText() ;
         String attrText2 = child.attributeValue("show") ;
        
         /**
         * 以下代码用于输出结果
         */
         System.out.println(gradChildText) ;
         System.out.println(gradChildText1) ;
         System.out.println(gradChildText2) ;
        
         System.out.println(attrText) ;
         System.out.println(attrText1) ;
         System.out.println(attrText2) ;
        
         /**
         * 关于XML的简单应用
         */
         String show ;
         show = attrText1 ;
         if(show.equals("yes")){
             System.out.println("元素<BOOK>的show属性的值是yes!") ;
         }
        
       }

}
分享到:
评论

相关推荐

    DOM4J jar包 xml解析 所有的dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1包 导入直接使用

    在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...

    dom4j dom4j dom4j dom4j

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单易行。在Java世界中,DOM4J是与DOM、SAX和JDOM等其他XML处理库并驾齐驱的一个选择,尤其在处理...

    dom4j_dom4j1.6.1安装包_

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的API,使得XML的解析、创建、查询和修改变得更为简单。在本文中,我们将深入探讨DOM4J 1.6.1版本的安装及其在Maven项目中的应用。 首先,DOM4J...

    dom4j-1.6.1 与 dom4j-2.0.0-ALPHA

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的API,使得XML的解析、创建、修改和查询变得简单。这次我们有两个版本的DOM4J库:1.6.1和2.0.0-ALPHA。这两个版本在功能、性能和API设计上都有所...

    dom4j_1.6.1.jar dom4j_2.1.0.jar

    标题提及的"dom4j_1.6.1.jar"和"dom4j_2.1.0.jar"是两个不同版本的DOM4J库的Java档案文件,DOM4J是一个非常流行的Java XML API,用于处理XML文档。这两个版本的差异在于功能、性能优化和可能存在的bug修复。描述中...

    dom4j-1.6.1.jar (dom4j) 欢迎下载

    dom4j-1.6.1.jar,Dom4j是一个Java的XML API接口,是jdom的进化版,dom4j基本用来读写xml文件,是一个十分优秀的JavaXML API接口

    dom4j-2.1.1-API文档-中英对照版.zip

    赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...

    dom4j所依赖的所有jar包

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而直观的API,使得开发者可以方便地读取、写入、修改以及操作XML文件。DOM4J 1.6.1是这个库的一个稳定版本,发布于较早时期,但依然广泛应用于许多Java...

    dom4j-2.1.3.zip

    另一份重要的资源是"dom4j-2.1.3-sources.jar",它提供了DOM4J库的源代码,允许开发者深入研究DOM4J的内部实现,对于理解DOM4J的工作原理、进行扩展或者调试都是不可或缺的。通过阅读源代码,开发者可以学习到如何...

    dom4j1.1-1.6.1.rar

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。DOM4J的名字来源于“Document Object Model for Java”,但它并不仅仅是一个DOM实现,它还包含...

    dom4j需要的包

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。DOM4J的名字来源于“Document Object Model for Java”,它采用面向对象的设计思想,提供了...

    dom4j-2.0.3.zip

    《深入解析DOM4J——基于Java的XML处理框架》 DOM4J,作为一个强大的Java XML API,是处理XML文档的主流工具之一。它提供了一套简单而高效的方式来操作XML文档,包括读取、写入、修改和遍历XML结构。在Java开发中,...

    dom4j-2.1.1-API文档-中文版.zip

    赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...

    dom4j.jar 下载

    DOM4J是一个强大的Java库,专门用于处理XML文档。它是一个灵活且高性能的XML解析器,提供了丰富的API来创建、修改和操作XML数据。在Java应用程序中,DOM4J作为一个流行的选择,尤其在处理复杂的XML结构时,因为它...

    所有版本的dom4j工具包

    标题提到的"所有版本的dom4j工具包"表明这是一个包含多版本DOM4J库的集合,可能包括了从早期到较新的一些版本,如dom4j-1.4.jar、dom4j-1.6.1.jar和dom4j-1.5.2.jar。这些不同版本的库可能分别对应于不同的功能特性...

    dom4j 2.1.1

    DOM4J 2.1.1 是一个针对Java平台的高效、开源的XML处理库,其全称为“Document Object Model for Java”。这个库提供了一系列强大的API,使得开发人员能够轻松地解析、创建、修改和操作XML文档。XML(eXtensible ...

    dom4j所需要的所有jar包

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的方式来解析、创建、操作和理解XML数据。这个库在Java开发中广泛使用,因为它提供了比标准Java DOM API更简单、性能更好的XML处理方式。以下是...

    org.dom4j.jar

    当我们遇到“java.lang.ClassNotFoundException: org.dom4j.DocumentException”的错误提示时,这通常意味着系统中缺少了DOM4j库,只需将“org.dom4j.jar”添加到项目类路径中即可解决此问题。 DOM4J是基于DOM和SAX...

    DOM4J帮助文档及使用教程

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高性能的API,使得在Java应用程序中解析、创建、修改和操作XML文档变得容易。DOM4J因其易用性和丰富的功能集,在Java社区中广受欢迎,尤其在处理大型...

Global site tag (gtag.js) - Google Analytics