前提:需要将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
赠送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文档-...
赠送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 导入直接使用
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源...
dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的...
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.zip与 dom4j-2.0.0-ALPHA-2.jar
maven dom4j 1.6.1安装包
dom4j常用方法 i.SAXReader sr = new SAXReader(); 生成解析器对象 ii.解析器对象.read(file对象); 解析文件生成Document对象 iii.文档对象.getRootElement() 获取跟元素节点 iv.元素节点.elements() 获取到指定...
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是一个Java的XML API接口,是jdom的进化版,dom4j基本用来读写xml文件,是一个十分优秀的JavaXML 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是一个很好的解析xml文档的框架
dom4j,用来处理xml
这个压缩包是一个关于DOM4J的压缩包,里面包含了DOM4J的帮助文档,DOM4J的使用教程,以及DOM4J这个JAVA包。保证这个压缩包是网上面最全的有关DOM4J的文档。
Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包
介绍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是一个简单、灵活的开放源代码的库。Dom4j是由早期开发JDOM的人分离出来而后独立开发的。与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性。 Dom4j是一...