?
//
創建xml
?
import
?java.io.File;
import
?java.io.FileWriter;

import
?org.dom4j.Document;
import
?org.dom4j.DocumentHelper;
import
?org.dom4j.Element;
import
?org.dom4j.io.XMLWriter;


public
?
class
?Creatxml?
{


??
/**?*/
/**
?????*?建立一個XML文檔,文檔名由輸入屬性決定

?????*?
@param
?filename?需建立的文件名

?????*?
@return
?返回操作結果,?0表失敗,?1表成功

?????
*/
public
??
static
?
void
?main(String?str[])

{
??createXMLFile(
"
c:/aaaa
"
);
}
????
public
?
static
?
int
?createXMLFile(String?filename)
{


???????
/**?*/
/**
?返回操作結果,?0表失敗,?1表成功?
*/
???????
int
?returnValue?
=
?
0
;


???????
/**?*/
/**
?建立document對象?
*/
???????Document?document?
=
?DocumentHelper.createDocument();


???????
/**?*/
/**
?建立XML文檔的根books?
*/
???????Element?booksElement?
=
?document.addElement(
"
books
"
);


???????
/**?*/
/**
?加入一行注釋?
*/
???????booksElement.addComment(
"
This?is?a?test?for?dom4j,?holen,?2004.9.11
"
);


???????
/**?*/
/**
?加入第一個book節點?
*/
???????Element?bookElement?
=
?booksElement.addElement(
"
book
"
);


???????
/**?*/
/**
?加入show屬性內容?
*/
???????bookElement.addAttribute(
"
show
"
,
"
yes
"
);


???????
/**?*/
/**
?加入title節點?
*/
???????Element?titleElement?
=
?bookElement.addElement(
"
title
"
);


???????
/**?*/
/**
?為title設置內容?
*/
???????titleElement.setText(
"
Dom4j?Tutorials
"
);

???????


???????
/**?*/
/**
?類似的完成后兩個book?
*/
???????bookElement?
=
?booksElement.addElement(
"
book
"
);

???????bookElement.addAttribute(
"
show
"
,
"
yes
"
);

???????titleElement?
=
?bookElement.addElement(
"
title
"
);

???????titleElement.setText(
"
Lucene?Studing
"
);

???????bookElement?
=
?booksElement.addElement(
"
book
"
);

???????bookElement.addAttribute(
"
show
"
,
"
no
"
);

???????titleElement?
=
?bookElement.addElement(
"
title
"
);

???????titleElement.setText(
"
Lucene?in?Action
"
);

???????


???????
/**?*/
/**
?加入owner節點?
*/
???????Element?ownerElement?
=
?booksElement.addElement(
"
owner
"
);

???????ownerElement.setText(
"
O'Reilly
"
);

???????


???????
try
{


???????????
/**?*/
/**
?將document中的內容寫入文件中?
*/
???????????XMLWriter?writer?
=
?
new
?XMLWriter(
new
?FileWriter(
new
?File(filename)));

???????????writer.write(document);

???????????writer.close();


???????????
/**?*/
/**
?執行成功,需返回1?
*/
???????????returnValue?
=
?
1
;


???????}
catch
(Exception?ex)
{

???????????ex.printStackTrace();

???????}
??????????????

???????
return
?returnValue;

????}
}
//
修改xml
---------------------------------------------------------------------
import
?java.io.File;
import
?java.io.FileWriter;
import
?java.util.Iterator;
import
?java.util.List;

import
?org.dom4j.Attribute;
import
?org.dom4j.Document;
import
?org.dom4j.Element;
import
?org.dom4j.io.SAXReader;
import
?org.dom4j.io.XMLWriter;


public
?
class
?UpdateXml?
{


?
/**?*/
/**
??*?
@param
?args
??
*/
?
public
?
static
?
void
?main(String[]?args)?
{
??
//
?TODO?Auto-generated?method?stub
???ModiXMLFile(
"
c:/aaaa
"
,
"
c:/bbb.xml
"
);
?}
?
/**?*/
/**
?????*?修改XML文件中內容,并另存為一個新文件

?????*?重點掌握dom4j中如何添加節點,修改節點,刪除節點

?????*?
@param
?filename?修改對象文件

?????*?
@param
?newfilename?修改后另存為該文件

?????*?
@return
?返回操作結果,?0表失敗,?1表成功

?????
*/
????
public
?
static
?
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;

????}
}
//
格式化xml
------------------------------------------------------------------------------------------------------------
import
?java.io.File;
import
?java.io.FileWriter;

import
?org.dom4j.Document;
import
?org.dom4j.io.
*
;


public
?
class
?OutXml?
{


?
/**?*/
/**
??*?
@param
?args
??
*/
?
public
?
static
?
void
?main(String[]?args)?
{
??
//
?TODO?Auto-generated?method?stub
??formatXMLFile(
"
c:/bbb.xml
"
);
?}
?
/**?*/
/**
?????*?格式化XML文檔,并解決中文問題

?????*?
@param
?filename

?????*?
@return
?????
*/
????
public
?
static
?
int
?formatXMLFile(String?filename)
{

???????
int
?returnValue?
=
?
0
;


???????
try
{

???????????SAXReader?saxReader?
=
?
new
?SAXReader();?

???????????Document?document?
=
?saxReader.read(
new
?File(filename));

???????????XMLWriter?writer?
=
?
null
;


???????????
/**?*/
/**
?格式化輸出,類型IE瀏覽一樣?
*/
??????????OutputFormat?format?
=
?OutputFormat.createPrettyPrint();


???????????
/**?*/
/**
?指定XML編碼?
*/
???????????format.setEncoding(
"
GBK
"
);

???????????writer
=
?
new
?XMLWriter(
new
?FileWriter(
new
?File(filename)),format);

???????????writer.write(document);

???????????writer.close();??????


???????????
/**?*/
/**
?執行成功,需返回1?
*/
???????????returnValue?
=
?
1
;?????


???????}
catch
(Exception?ex)
{

???????????ex.printStackTrace();

???????}
???????
return
?returnValue;

????}
}
posted on 2006-12-01 11:45
一手的小窩窩 閱讀(1285)
評論(0) 編輯 收藏 所屬分類:
JAVA