-
1
、
DOM4J
p>
简介
DOM4J
是
出品的一个开源
XML
解析包。
DOM4J
应用于
Java
平台,采
用了
Java
集合框架并完全支持
DOM
,
SAX
和
JAXP
。
DOM4J
使用起来非常简单。只要你了解基本的
XML-DOM
模型,就能使用。
Dom
:把整个文档作为一个对象。
DOM4J
最大的特
色是使用大量的接口。它的主要接口都在
4j
p>
里面定义:
魂牵梦萦
魂牵梦萦
魂牵梦萦
Attribute
定义了
XML
的属性。
Branch
指能够包含子节点的节点。
如
XML
元素
(El
ement)
和
文
档
(Docue
mnts)
定
义了一
个公共
的行为
CDATA
定义了
XML CDATA
区域
CharacterData
是一个标识接口,
标识基于字符的节点。
如
CDATA
,
Comment,
Comment
Document
DocumentType
Element
ElementHandler
ElementPath
Entity
Node
NodeFilter
ProcessingInstruction
Text
Visitor
XPath
Text.
定义了
XML
注释的行为
定义了
XML
文档
定义
XML DOCTYPE
声明
定义
XML
元素
定义了
Element
对象的处理器
被
ElementHandler
使用,
用于取得当前正在处理的路径层次信息
< br>
定义
XML
entity
为
dom4j
中所有的
XML
节点定义了多态行为
定义了在
dom4j
节点中产生的一个滤镜或谓词的行为(
predicate
)<
/p>
定义
XML
处理指令
定义
XML
文本节点
用于实现
Visitor
模式
在分析一个字符串后会提供一个
XPath
表达式
接口之间的继承关系如下:
interface ble
interface 4j.
Node
interface ute
interface
interface nt
interface t
interface
interface t
interface
interface terData
interface
ntType
interface
interface singInstruction
2<
/p>
、
XML
文档操作
1
2.1
、读取
XML
文档:
读写
XML
文档主要依赖于
包,有
DOMReader
和
SAXR
eader
两种方式。因为利
用了相同的接口,它们的调用方式
是一样的。
public static Document
load(String filename) {
Document
document = null;
try {
SAXReader saxReader = new SAXReader();
document =
saxReader.
read
(new
File(filename));
//
< br>读取
XML
文件
,
获得
document
对象
} catch (Exception ex) {
tackTrace();
}
return document;
}
或
public static
Document load(URL url) {
Document
document = null;
try {
SAXReader saxReader = new SAXReader();
document =
saxReader.
read
(url);
//
读取
X
ML
文件
,
获得
document
对象
}
catch (Exception ex) {
tackTrace();
}
return document;
}
//
读取指定的
< br>xml
文件之后返回一个
Document
对象,这个对象代表了整个
XML
文档,用于各种<
/p>
Dom
运算。
执照
XML
文件头所定义的编码来转换。
2.2
、获取根节点
根节点是
xml
分析的开始,任何
xml
分析工作都需要从根开始
Xml xml = new Xml();
Document dom =
xml.
load
(path +
Element root =
dom.
getRootElement
();
2.3
、
.
新增一个节点以及其下的子节点与数据
Element menuElement = ment(
Element engNameElement =
ment(
t(catNameEn);
Element
chiNameElement = ment(
t(catName);
2.4
、
写
入
XML
文件
注意文件操作的包装类
是乱码的根源
public static boolean
doc2XmlFile(Document document, String filename) {
boolean flag = true;
try {
XMLWriter writer = new
XML
Writer( new OutputStreamWriter(new F
ileOutputStream(filename),
writer
.write(document);
();
}
catch (Exception ex) {
flag = false;
tackTrace();
}
n(flag);
return flag;
}
Dom4j
通过
XMLWriter
将
Docu
ment
对象表示的
XML
树
写入指定的文件,并使用
OutputFormat
格式对象指定写入的风格和编码方法。
调用
PrettyP
rint()
方法可以获得一个默认的
pretty prin
t
风格的格式对象。对
OutputFormat
对象调用
setEncoding()
方法可以指定
XML
文件的编码方法。
public void
writeT
o(OutputStream out, String
e
ncoding) throws
UnsupportedEncodingException, IOException {
OutputFormat format = OutputForm
at.
createPrettyPrint
();
format.
setEncoding
(
XMLWriter writer = new
XMLWriter(,format);
writer.
write
(doc);
();
return;
}
2.
5
、
遍历
x
ml
节点
对
Doc
ument
对象调用
getRootElement()
方法可以返回代表根节点的
Element
对
象。
拥
有了一个
Element
对象后,可以对该对象调用
elementIterator()
p>
方法获得它的子节点的
Element
对象
们的一个迭代器。使用
(Element)iterator
.
next()
方法遍历一个
iterator
< br>并把每个
取出的元素转化为
Element
类型。
public
boolean isOnly(String catNameEn,HttpServletRequest
request,String xml) {
boolean flag =
true;
String path =
lPath(
Document doc =
load(path+
Element root =
doc.
getRootElement
();
for (Iterator i =
root.
elementIterator
();
t();) {
Element el = (Element) ();
if((tTextTrim(
flag = false;
break;
}
}
return flag;
}
2.6
、创建
xml
文件
public
static void main(String args[]){
String
fileName=
Document document=DocumentHelp
er.
createDocument
();
< br>//
建立
document
对象
,
用来操作
xml
文件
Element booksElement=document.
addElement
(
建立根节点
booksElement.
addComme
nt
(
加入一行注释
Element bookElement=booksElement.
addElement
(
添加一个
< br>book
节点
bookEle
ment.
addAttribute
(
添加属性内容
Element titleElement
=bookElement.
addElement
(
添加文本节点
titleElement.<
/p>
setT
ext
(
添加文本内容
try{
XMLWriter writer=new XMLWriter(new
FileWriter(new File(fileName)));
writer
.write(document);
();
}catch(Exception e){
tackTrace();
}
}
2.7
、修改节点属性
public
static
void
modifyXMLFile() {
String oldStr =
;
String newStr =
;
Document document =
null
;
//
修改节点的
属性
try
{
SAXReader
saxReader =
new
SAXReader();
//
用来读取
xml
文档
document =
(
new
File(oldStr));
//
读取
xml
文档
List list =
Nodes(
);
//
用
xpath
查找节点
bo
ok
的属性
Iterator
iter = or();
while
(t()) {
Attribute attribute = (Attribute) ();
if
(ue().equals(
))
ue(
);
}
}
catch
(Exception e) {
tackTrace();
} <
/p>
//
修改节点的
内容
try
{
SAXReader saxReader =
new
SAXReader();
//
用来读取
xml
文档
document =
(
new
File(oldStr));
//
读取
xml
文档
List list =
Nodes(
);
//
用
xpath
查找节点
bo
ok
的内容
Iterator
iter = or();
while
(t()) {
Element element = (Element) ();
t(
);
//
设置相应的内容
}
}
catch
(Exception e) {
tackTrace();
}
try
{
XMLWriter
writer =
new
XMLWriter(
new
FileWriter(
new
File(newStr)));
(document);
();
}
catch
(Exception ex) {
}
}
tackTrace();
2.8
、删除节点
public
static
void
removeNode() {
String oldStr =
;
String newStr =
;
Document document =
null
;
try
{
SAXReader
saxReader =
new
SAXReader();
//
用来读取
xml
文档
document
= (
new
File(oldStr));
//
读取
xml
文档
List list
= Nodes(
);
//
用
xpath
查找对象
Iterator iter = or();
while
(t()) {
Element bookElement = (Element) ();
//
创建迭代器,用来查找要删除的节点
,
迭代器相当于指针,指向
book
下所有的
title
节点
Iterator iterator =
tIterator(
);
while
(t()) {
Element titleElement = (Element)
();
if
(t().equals(
)) {
(titleElement);
}
}
}
}
catch
(Exception e) {
tackTrace();
}
try
{
XMLWriter
writer =
new
XMLWriter(
new
FileWriter(
new
File(newStr)));
(document);
();
}
catch
(Exception ex) {
tackTrace();
}
}
2
、
XML
文档操作
2
2.1
< br>、
Document
对象相关
p>
1
、
读取
XML<
/p>
文件
,
获得
do
cument
对象
.
SAXReader reader = new SAXReader();
Document
document =
reader.
read
(new
File(
2
p>
、
解析
XML
形式
的文本
,
得到
document
对象
.
String text =
Document
document = DocumentHelper.
parseText
(text);
3
p>
、主动创建
document
对象
.
Document document = DocumentHelper.
createDocument
();
Element root =
document.
addElement
(
< br>创建根节点
2.2
、节点相关
1
、获取文档的根节点
.
Element rootElm
= document.
getRootElement
();
2
、取得某节点的单个子节点
.
Element memberE
lm=root.
element
(
是
节点名
3.
取得节点的文字
String
text=memberElm.
getText
();
String text=root.
elementText
(
这个是取得根节点下的
name
字节点的文字
.
4.<
/p>
取得某节点下指定名称的所有节点并进行遍历
.
List nodes =
rootElm.
elements
(
for (Iterator it = or();
t();) {
Element elm = (Element) ();
// do something
}
5.<
/p>
对某节点下的所有子节点进行遍历
.
for(Iterator
it=tIterator();t();){
Element element = (Element)
();
//
do something
}
6.
在某节点下添加子节点
.
Element ageElm
= newMemberElm.
addElement
(
p>
7.
设置节点文字
.
ageElm.
< br>setText
(
8.
删除某节点
.
parentElm.
remove
(childElm);
// childElm
是待删除的节点
,parentElm
是其父节
点
9.<
/p>
添加一个
CDATA
节点
.
Element contentElm = infoElm.
addElement
(
contentElm.
addCD
ATA
(tent());
-
-
-
-
-
-
-
-
-
上一篇:常见羊病及其防治方法
下一篇:dom4j api 详解