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());
}
}
}
}
关于具体代码实现,有篇博客写的很好。
大神的杰作,瞻仰一番