1. 程式人生 > 程式設計 >Java使用dom4j實現對xml簡單的增刪改查操作示例

Java使用dom4j實現對xml簡單的增刪改查操作示例

本文例項講述了Java使用dom4j實現對xml簡單的增刪改查操作。分享給大家供大家參考,具體如下:

xml留了個結課作業: 後臺用xml檔案作為儲存做個迷你係統實現增刪改查的功能,在此記錄一下

先得引入dom4j的jar包放在專案的WEB-INF-->lib目錄下

Java使用dom4j實現對xml簡單的增刪改查操作示例

先新建一個讀取器,讀取你想操作的xml檔案(我這裡寫的絕對路徑)

//讀取XML檔案,獲得document物件
SAXReader reader = new SAXReader();
Document document = null;
try {
	document = reader.read(new File("E:\\eclipse\\XmlTest\\src\\xml\\user.xml"));
} catch (DocumentException e) {
	e.printStackTrace();
}

上邊的try catch不加的話eclipse會報錯,因為涉及到檔案操作,document不初始為null化也會報錯

//獲得根節點的屬性物件
Element rootElem = document.getRootElement();

基本語句:

//以下操作以root為例,所有節點都可以並非只有根節點,下面的孩子指第一代孩子
 
//返回root節點的標籤名為"user"的孩子節點,如果有多個只返回第一個
Element contactElem = rootElem.element("user");
 
//獲取節點標籤之間的內容
String text=contactElem .getText();
 
//返回所有的孩子節點,即一個List<Element>
List<Element> eles = rootElem.elements();
 
//返回該節點的屬性,返回的是一個物件
Attribute rootAttr = rootElem.attribute("id");
 
//更改屬性值
rootAttr.setValue("更改後的id值");
 
//給元素新增屬性和屬性值
rootElem.addAttribute("name","新增成功!");
 
//刪除節點的某屬性
rootElem.remove(rootAttr);
 
//節點和節點的屬性都可以獲取名字(標籤名/屬性名)
String idName = rootAttr.getName();
String tagName = rootElem.getName();
 
//獲取屬性的屬性值
String value=rootAttr.getValue();
 

所有涉及到修改增加的操作,修改完dom物件後都要寫回檔案:

OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
org.dom4j.io.XMLWriter writer=new org.dom4j.io.XMLWriter(new FileOutputStream(new File(這裡填你的xml路徑)),format);
writer.write(document);
writer.close();

以下都省略檔案的讀取和document / rootElem的獲取(上面提到過)

我這裡有個使用者表如下,做後端的賬號密碼儲存

Java使用dom4j實現對xml簡單的增刪改查操作示例

//user,password是前臺傳來的賬號密碼
boolean RightPassword=false;
List<Element> eles = rootElem.elements();
for (Element ele : eles) 
{
  if(ele.element("account").getText().equals(user))
  {
  	if(ele.element("password").getText().equals(password))
  		RightPassword=true;
  	return;
  }
}

這裡拿另一個xml舉例,該xml儲存文章

Java使用dom4j實現對xml簡單的增刪改查操作示例

示例增加一個文章,大家可以做的更復雜一些

Element newArticle=rootElem.addElement("article");
newArticle.setText("文章內容");
//以下的輸出檔案和上面提到的一樣
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
org.dom4j.io.XMLWriter writer=new org.dom4j.io.XMLWriter(new FileOutputStream(new File("你的xml路徑")),format);
writer.write(document);
writer.close();

下面示例按標籤內容刪除一個節點

(應該按某個屬性值如id刪除,因為上例追求簡單沒設屬性)

List<Element> eles = rootElem.elements();
for (Element ele : eles) 
{
	if(ele.getText().equals("按照內容刪除"))
	{
		rootElem.remove(ele);
	}
}
//以下的輸出檔案和上面提到的一樣
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
org.dom4j.io.XMLWriter writer=new org.dom4j.io.XMLWriter(new FileOutputStream(new File("你的xml路徑")),format);
writer.write(document);
writer.close();

和上面的刪除只有一句不同,找到節點後想修改什麼就 set什麼就可以了

List<Element> eles = rootElem.elements();
for (Element ele : eles) 
{
	if(ele.getText().equals("按照內容修改"))
	{
		ele.setText("修改後的內容");
	}
}
//以下的輸出檔案和上面提到的一樣
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
org.dom4j.io.XMLWriter writer=new org.dom4j.io.XMLWriter(new FileOutputStream(new File("你的xml路徑")),format);
writer.write(document);
writer.close();

PS:這裡再為大家提供幾款關於xml操作的線上工具供大家參考使用:

線上XML/JSON互相轉換工具:
http://tools.jb51.net/code/xmljson

線上格式化XML/線上壓縮XML
http://tools.jb51.net/code/xmlformat

XML線上壓縮/格式化工具:
http://tools.jb51.net/code/xml_format_compress

XML程式碼線上格式化美化工具:
http://tools.jb51.net/code/xmlcodeformat

更多關於java演算法相關內容感興趣的讀者可檢視本站專題:《Java資料結構與演算法教程》、《Java操作DOM節點技巧總結》、《Java檔案與目錄操作技巧彙總》和《Java快取操作技巧彙總》

希望本文所述對大家java程式設計有所幫助。