dom4j是一個Java的XML API,類似於jdom,用來讀寫XML文件的。dom4j是一個非常非常優秀的Java XML API,具有性能優異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟件,可以在SourceForge上找到它.
對主流的Java XML API進行的性能、功能和易用性的評測,dom4j無論在那個方面都是非常出色的。如今你可以看到越來越多的Java軟件都在使用dom4j來讀寫XML,例如Hibernate,包括sun公司自己的JAXM也用了Dom4j。
myeclipse與eclipse中dom4j的使用
a)導入jar包
1. 找到dom4j-1.6.1.jar 然後複製
2. 在工程中創建文件夾lib
3. 粘貼到lib文件夾
4. 右擊jar文件,build path->add to build path
dom4j解析需要用到dom4j的jar包
在網上找了半天,要在外網下載,對網速有要求,對於沒有耐心的人會很痛苦。。。
我完了會將相關資源上傳到我的百度雲,有需要可以直接下載
留作備份吧
鏈接:https://pan.baidu.com/s/1bQV6mM 密碼:ui3n
如果到期聯繫筆者,無償分享
代碼實現
package xml;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Dom4jParser {
static Element root;
static List<Element> list=null;
public static void main(String[] args) {
//1.創建解析器
SAXReader reader=new SAXReader();
//2.獲取文檔模型
Document doc=null;
try {
doc=reader.read("resource/Demo1.xml");
root=doc.getRootElement();
list=root.elements("book");
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
add();
delete();
show();
try {
save(doc);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//增加
public static void add(){
list=root.elements("book");
for (Element book : list) {
if("Harry Potter".equals(book.element("title").getText())){
//這個是設置標籤的屬性。。。
//book.addElement("desc","好書");
//下面這個方法是往標籤裏面添加內容
Element e=book.addElement("desc");
e.setText("好書");
}
}
for (Element book : list) {
//System.out.println(book.attributeValue("category"));
List bookAttList=book.elements();
if("Harry Potter".equals(book.element("title").getText())){
/*
* 這是獲取內容,前面測試了好久,明明添加節點方法是對的,爲什麼出不來結果。。。
* 後來發現是獲取方法錯了,心累
*
*/
System.out.println(book.element("desc").getText());;
}
}
}
//刪除
public static void delete(){
//刪除要先刪除該節點的父節點,然後調用方法刪除
Element theEle=null;
for (Element e: list) {
List<Element> sonlist=e.elements();
for (Element element : sonlist) {
if("Harry Potter".equals(element.getText())){
System.out.println("============");
theEle=element;
//element.getParent().getParent().remove(element.getParent());
break;
}
}
}
/*Element ele=theEle.getParent();
ele.getParent().remove(ele.getParent());*/
theEle.getParent().remove(theEle);
}
//保存
public static void save(Document doc) throws IOException{
/**
* 將節點寫出到XML文件中去
* 1:使用轉換流(默認平臺碼),指定編碼集
* 2:利用XMLWriter
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter
(new FileOutputStream("output.xml"),format);
writer.write(node);
writer.close();
*/
XMLWriter writer=new XMLWriter(new FileOutputStream("resource/result.xml"));
writer.write(doc);
writer.close();
}
//查
public static void show(){
for (Element book : list) {
//System.out.println(book.attributeValue("category"));
List<Element> bookAttList=book.elements();
for (Element bookatt : bookAttList) {
System.out.println(bookatt.getName()+":"+bookatt.getText());
}
}
}
}
關於具體代碼實現,有篇博客寫的很好。
大神的傑作,瞻仰一番