???
/**
???
?
*
修改
XML
文件中內容
,
并另存為一個新文件
???
?
*
重點掌握
dom4j
中如何添加節點
,
修改節點
,
刪除節點
???
?
*
@param
filename
修改對象文件
???
?
*
@param
newfilename
修改后另存為該文件
???
?
*
@return
返回操作結果
,
0
表失敗
,
1
表成功
???
?
*/
???
public
int
ModiXMLFile(String
filename,String
newfilename){
??????
int
returnValue
=
0;
??????
try
{
??????????
SAXReader
saxReader
=
new
SAXReader();
??????????
Document
document
=
saxReader.read(
new
File(filename));
??????????
/**
修改內容之一
:
如果
book
節點中
show
屬性的內容為
yes,
則修改成
no
*/
??????????
/**
先用
xpath
查找對象
*/
??????????
List
list
=
document.selectNodes(
"/books/book/@show"
);
??????????
Iterator
iter
=
list.iterator();
??????????
while
(iter.hasNext()){
?????????????
Attribute
attribute
=
(Attribute)iter.next();
?????????????
if
(attribute.getValue().equals(
"yes"
)){
?????????????????
attribute.setValue(
"no"
);
?????????????
}
??
??????????
}
??????????
??????????
/**
??????????
?
*
修改內容之二
:
把
owner
項內容改為
Tshinghua
??????????
?
*
并在
owner
節點中加入
date
節點
,date
節點的內容為
2004
-
09
-
11,
還為
date
節點添加一個屬性
type
??????????
?
*/
??????????
list
=
document.selectNodes(
"/books/owner"
);
??????
???
iter
=
list.iterator();
??????????
if
(iter.hasNext()){
?????????????
Element
ownerElement
=
(Element)iter.next();
?????????????
ownerElement.setText(
"Tshinghua"
);
?????????????
Element
dateElement
=
ownerElement.addElement(
"date"
);
?????????????
dateElement.setText(
"2004-09-11"
);
?????????????
dateElement.addAttribute(
"type"
,
"Gregorian calendar"
);
??????????
}
??????????
??????????
/**
修改內容之三
:
若
title
內容為
Dom4j
Tutorials,
則刪除該節點
*/
??????????
list
=
document.selectNodes(
"/books/book"
);
??????????
iter
=
list.iterator();
??????????
while
(iter.hasNext()){
?????????????
Element
bookElement
=
(Element)iter.next();
?????????????
Iterator
iterator
=
bookElement.elementIterator(
"title"
);
??????????
???
while
(iterator.hasNext()){
?????????????????
Element
titleElement=(Element)iterator.next();
?????????????????
if
(titleElement.getText().equals(
"Dom4j Tutorials"
)){
????????????????????
bookElement.remove(titleElement);
?????????????????
}
?????????????
}
??????????
}
?????????
??????????
??????????
try
{
?????????????
/**
將
document
中的內容寫入文件中
*/
?????????????
XMLWriter
writer
=
new
XMLWriter(
new
FileWriter(
new
File(newfilename)));
?????????????
writer.write(document);
?????????????
writer.close();
?????????????
/**
執行成功
,
需返回
1
*/
?????????????
returnValue
=
1;
??????????
}
catch
(Exception
ex){
?????????????
ex.printStackTrace();
??????????
}
??????????
??????
}
catch
(Exception
ex){
??????????
ex.printStackTrace();
??????
}
??????
return
returnValue;
???
}
???
|