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

当前位置 : 首页 > 网页制作 > CSS > 关于dom4j对xml文件实现增删改创的操作

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

来源: 作者: 时间:2016-01-28 09:27
对xml操作的方式很多,这里主要讲的是dom4j jar对xml的解析方式,以及一些常规操作,源码很简单。创建xml截图:插入信息后截图:增加的事科教节点。修改信息截图:移除信息截图:以

对xml操作的方式很多,这里主要讲的是dom4j.jar对xml的解析方式,以及一些常规操作,很简单。

创建xml截图:

\

插入信息后截图:

vcy92rXjoaM8L3A+CjxwPtDeuMTQxc+ivdjNvKO6PC9wPgo8cD48aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20140107/20140107095057194.jpg" alt="\">

移除信息截图:

\

以上截图是代码实现的对整个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("[email protected]");//查找属性
		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();
	}
}


文章完。

Tag:
网友评论

<