`
ganjuelovejava
  • 浏览: 92070 次
  • 性别: 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 dom4j dom4j dom4j

    dom4j dom4j dom4j dom4j dom4j dom4j

    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-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包 xml解析 所有的dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1包 导入直接使用

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

    JavaEE源代码 dom4j-1.6.1

    JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源...

    资源jar包dom4j-1.6.1.rar

    dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的...

    Dom4j_使用简介

    Dom4j_使用简介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 Java ...

    dom4j-1.6.1 与 dom4j-2.0.0-ALPHA

    dom4j-1.6.1.zip与 dom4j-2.0.0-ALPHA-2.jar

    dom4j_dom4j1.6.1安装包_

    maven dom4j 1.6.1安装包

    dom4j常用方法

    dom4j常用方法 i.SAXReader sr = new SAXReader(); 生成解析器对象 ii.解析器对象.read(file对象); 解析文件生成Document对象 iii.文档对象.getRootElement() 获取跟元素节点 iv.元素节点.elements() 获取到指定...

    Dom4j 1.6.1 JAVA API

    dom4j帮助文档 官方API All Classes Packages org.dom4j org.dom4j.bean org.dom4j.datatype org.dom4j.dom org.dom4j.dtd org.dom4j.io org.dom4j.jaxb org.dom4j.rule org.dom4j.rule.pattern org.dom...

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

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

    dom4j api 参考手册

    org.dom4j.io Provides input and output via SAX and DOM together with writing dom4j objects to streams as XML text. org.dom4j.jaxb org.dom4j.rule A Pattern based XML rule engine which implements the ...

    dom4j框架解析教程

    dom4j技术教程,dom4j是一个很好的解析xml文档的框架

    dom4j-1.6.1-7

    dom4j,用来处理xml

    DOM4J帮助文档及使用教程

    这个压缩包是一个关于DOM4J的压缩包,里面包含了DOM4J的帮助文档,DOM4J的使用教程,以及DOM4J这个JAVA包。保证这个压缩包是网上面最全的有关DOM4J的文档。

    Dom4j常用jar包

    Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包

    DOM4j属性的详细介绍及相关的例子

    介绍DOM4J的主要接口的使用方法,Elementorg.dom4j.Attribute : Attribute接口定义了XML文件的属性 org.dom4j.Branch:Branch为能够包含子节点的节点如XML元素和文档定义了一个公共为 org.dom4j.CDATA : CDATA定义了...

    Dom4j解析XML文档.doc

    Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc

    DOM4J的jar包和API

    Dom4j是一个简单、灵活的开放源代码的库。Dom4j是由早期开发JDOM的人分离出来而后独立开发的。与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性。 Dom4j是一...

Global site tag (gtag.js) - Google Analytics