-
1
、
DOM4J
p>
简介
DOM4J
是
出品的一个开源
XML
解析包。<
/p>
DOM4J
应用于
Java
平台,
采用了
Java
集合
框架并完全支持
DOM
,
SAX
和
JAXP
。
DOM4J
使用起来非常简单。只要你了解基本的
XML-DOM
模型,就能使用。
Dom
:把整个文档作为一个对象。
DOM4J
最大的特色是使用大量的接口。它的主要接口都在
4j
里面定义:
Attribute
Branch
CDATA
CharacterData
Comment
Document
DocumentType
Element
ElementHandler
ElementPath
Entity
Node
NodeFilter
ProcessingInstruction
Text
Visitor
XPath
接口之间的继承关系如下:
interface ble
interface 4j.
Node
interface ute
interface
interface
nt
interface t
interface terData
interface
interface t
interface
interface ntType
定义了
XML
的属性。
指能够包含子节点的节点。
如
XML
元素
(Element)
p>
和文档
(Docuemnts)
定义了一个
公共的行为
定义了
XML
CDATA
区域
是一个标识接口,
标识基于字符的节点。如
CDATA
,
Comment, Text.
定义了
XML
注释的行为
定义了
XML
文档
定义
XML DOCTYPE
声明
定义
XML
元素
定义了
Element
对象的处理器
被
ElementHandler
使用,用于取得当前正在处理的路径层次信息
定义
XML entity
为
dom4j
中所有的
XML
节点定义了多态行为
定义了在
dom4j
节点中产生的一
个滤镜或谓词的行为(
predicate
)
< br>
定义
XML
处理指令
定义
XML
文本节点
用于实现
Visitor
模式
在分析一个字符串后会提供一个
XPath
表达式
interface
interface singInstruction
2<
/p>
、
XML
文档操作
1
2.1
、读取
< br>XML
文档:
p>
读写
XML
文档主要依赖于
包,有
DOMReader
和
SAXReader
两种方式。因为利用
了相同的接口,它们的调用方式是一样的。
public
static Document load(String filename) {
Document document = null;
try {
SAXReader
saxReader = new SAXReader();
document = saxReader
.
read
(new File(filename)); //
读取
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); //
读取
< br>XML
文件
,
获得
document
对象
}
catch (Exception ex) {
tackTrace();
}
return
document;
}
//
读取指定的
xml
文
件之后返回一个
Document
对象,这个对象代表了整个<
/p>
XML
文档,用于各种
Dom
运算。执照
XML
文件头所定义的编码来转换。<
/p>
2.2
、获取根节点
根节点是
xml
分析的开始,任何
xml
分析工作都需要从根开始
Xml xml = new Xml();
Document dom =
xml.
load
(path +
Element root = dom.
getRootEl
ement
();
2.3
、
.
新增一个节点以及其下的子节点与数据
Element menuElement = ment(
Element engNameElement =
ment(
ext(catNameEn);
Element chiNameElement =
ment(
t(catName);
2.4
、
写
入
XML
文件
注意文件操作的包装类
是乱码的根源
public static boolean
doc2XmlFile(Document document, String filename) {
boolean flag = true;
try {
XMLWriter writer = new XMLWriter( new
OutputStreamWriter(new FileOutputStream(filen
ame),
(document);
();
} catch (Exception ex) {
flag = false;
tackTrace();
}
n(flag);
return
flag;
}
Dom
4j
通过
XMLWriter
将
Document
对象表示的
XML
树写入指定的文件,并使用
OutputFormat
< br>格式对象指定写入的风格和编码方法。
调用
Pretty
Print()
方法可以获得一个默认的
pretty pri
nt
风格的格式对象。对
OutputFormat
对象调用
setEncoding()
方法可以指
定
XML
文件的编码方法。
public void
writeTo(OutputStream out, String encoding) throws
UnsupportedEncodingExc
eption,
IOException {
OutputFormat
format = PrettyPrint();
oding(
XMLWriter writer = new
XMLWriter(,format);
(doc);
();
return;
}
2. 5
、遍历
< br>xml
节点
<
/p>
对
Document
对象调用
getRootElement()
方法可以返回代表根节点的
Element
对象。拥有了一
个
Element
对象后,
可以对该对象调用
elementIterator()
方法获得它的子节点的
Element
对象们的一
个迭代器。使用
(Element)iterator
.next()
< br>方法遍历一个
iterator
并把每个取出的元素转化
为
Element
类型。
public boolean isOnly(String
catNameEn,HttpServletRequest request,String xml) {
boolean flag = true;
String
path = lPath(
Document doc =
load(path+
Element root = tElement();
for (Iterator i = tIterator(); t();) {
Element el = (Element) ();
if((tTextTrim(
flag = false;
break;
}
}
return flag;
}
2.
6
、创建
xml
文件
< br>
public static void main(String
args[]){
String
fileName=
Document document=
DocumentHelper
.
createDocumen
t
();//
建立
document<
/p>
对象,用来操作
xml
文件
Element booksElement=document.
addElement
(
建立根节点
booksElement.
addComm
ent
(
加入一行注释
Element bookElement=booksElement.
addElement
(
添加一个
< br>book
节点
bookEle
ment.
addAttribute
(
添加属性内容
Element titleElement
=bookElement.
addElement
(
添加文本节点
titleElement.<
/p>
setText
(
添加文本内容
try{
XMLWriter writer=new XMLWriter(new
FileWriter(new File(fileName)));
writer
.write(document);
writer
.close();
}catch(Exception e){
tackTrace();
}
}
2.7
、修改节点属性
public
static
void
modifyXMLFile()
{
String oldStr =
String newStr =
Document document =
null
;
//
修改节点的
属性
try
{
SAXReader saxReader =
new
SAXReader(); //
< br>用来读取
xml
文档
document = saxReader
.read(
p>
new
File(oldStr)); //
< br>读取
xml
文档
List list = Nodes(
用
xpath
查找节点
book
的属
性
Iterator iter =
or();
while
(iter
.hasNext()) {
Attribute attribute = (Attribute)
iter
.next();
if
(ue().equals(
ue(
}
}
catch
(Exception e)
{
tackTrace();
}
p>
//
修改节点的
内容
try
{
SAXReader saxReader =
new
SAXReader(); //
< br>用来读取
xml
文档
document = saxReader
.read(
p>
new
File(oldStr)); //
< br>读取
xml
文档
List list = Nodes(
用
xpath
查找节点
book
的内
容
Iterator iter =
or();
while
(iter
.hasNext()) {
Element element = (Element)
iter
.next();
t(
设置相应的内容
}
}
catch
(Exception e)
{
tackTrace();
}
try
{
XMLWriter writer =
new
XMLWriter(
new
FileWriter(
new
File(newStr)));
writer
.write(document);
writer
.close();
}
catch
(Exception ex) {
tackTrace();
}
}
2.8
、删除节点
public
static
void
removeNode()
{
-
-
-
-
-
-
-
-
-
上一篇:DOM4J文档
下一篇:2020年最新部编版七年级语文下册字词整理