您的位置:首页 > 编程语言 > Java开发

关于dom4j对xml文件实现增删改创的操作

2014-01-06 17:36 387 查看
对xml操作的方式很多,这里主要讲的是dom4j.jar对xml的解析方式,以及一些常规操作,源码很简单。

创建xml截图:



插入信息后截图:



增加的事科教节点。

修改信息截图:



移除信息截图:



以上截图是代码实现的对整个xml的简单创建,代码简单,切勿见怪。具体参看代码注释。

package trs.li.parsexml;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Iterator;
import java.util.List;

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

/**解析xml文件
* @author trsli
* 该类主要是个人简单学习dom4j.jar关于解析xml的方式,不具备实用性
* 节点深度在一定程度上会增加难度,这里我就采用了两层,这是一大败笔。
* */
public class ParseXMLDemo {
public static void main(String[] args) {
try {
//createXML();//1创建
//insertXML();//2插入信息
//modifyXML();//3修改
delXML();//4移除
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**创建xml文件
* 注:刚开始在这里犯了一个错误,后来才知道只有跟节点才是通过document.addElement()创建的
* 由于操作的大致方式与javascript DOM操作类似,所以学习解析xml对于学javascript还是很有好处的
* */
private static void createXML() throws Exception{
String filename="E:\\book.xml";
Document document=DocumentHelper.createDocument();
Element element=document.addElement("books");
element.addAttribute("id", "books");
element.addComment("这是一行注释");

Element celement=element.addElement("book");
celement.addComment("这是一个节点");
celement.addAttribute("value", "小说");
celement.setText("红楼梦");
//element.add(celement);

Element element1=element.addElement("book");
element1.addAttribute("value", "技术");
element1.setText("C++");
//element.add(element1);

Element element2=element.addElement("book");
element2.addAttribute("value", "教材");
element2.setText("语文");
//element.add(element2);

XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File(filename)));
xmlWriter.write(document);
System.out.println("创建成功...");
xmlWriter.close();
}
/**向xml中插入新数据
* addComment()为增加注释
* */
private static void insertXML()throws Exception {
Document document=null;
SAXReader reader=new SAXReader();
document=reader.read("E:\\book.xml");
Element element=document.getRootElement();//获取根节点
//Element ele=element.element("books");
Element book=element.addElement("book");
book.addComment("这是追加的");
book.addAttribute("value", "科教");
book.setText("星球大战");

XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File("E:\\book.xml")));
xmlWriter.write(document);
System.out.println("插入成功....");
}
/**修改xml文本
* 这里主要是修改属性和节点文本信息
* */
private static void modifyXML()throws Exception {
Document document=null;
SAXReader reader=new SAXReader();
document=reader.read("E:\\book.xml");
List list=document.selectNodes("/books/book/@value");//查找属性
Iterator it=list.iterator();
while(it.hasNext()){
Attribute attr=(Attribute)it.next();//属性遍历
if(attr.getValue().equals("科教")){
System.out.println("开始修改....");
attr.setValue("科幻小说");
}
}
//查找结点
List list1=document.selectNodes("/books/book");
Iterator it1=list1.iterator();
while(it1.hasNext()){
Element element=(Element) it1.next();//节点遍历
if(element.getText().equals("语文")){
System.out.println("开始修改2.....");
element.setText("数学");
}
}
XMLWriter xmlwriter = new XMLWriter(new FileOutputStream("E:\\book.xml"));
xmlwriter.write(document);
System.out.println("完成....");
xmlwriter.close();
}
/**删除xml内容
* 如果有更加深的节点需要删除,可以采用多层遍历
* */
private static void delXML()throws Exception{
Document document=null;
SAXReader reader=new SAXReader();
document=reader.read("E:\\book.xml");
Element root=document.getRootElement();
List list=document.selectNodes("/books/book");
Iterator it=list.iterator();
while(it.hasNext()){
Element element=(Element) it.next();
if(element.getText().equals("数学")){
System.out.println("删除...");
root.remove(element);
}
}
XMLWriter xmlwriter = new XMLWriter(new FileOutputStream("E:\\book.xml"));
xmlwriter.write(document);
System.out.println("删除成功...");
xmlwriter.close();
}
}


文章完。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dom xml 遍历 java 源码