1.使用dom4j技术对dom_demo.xml进行增删改查
首选要下载dom4j的jar包
在官网上找不到,网上搜索了一下在这个链接:http://sourceforge.net/projects/dom4j
下载好后进行解压,解压完成后根目录中出现的dom4j-1.6.1.jar就是我们需要的jar包
1.1导包过程如下:
在工程名下简历一个文件夹lib
复制dom4j-1.6.1.jar到lib下
右键点击dom4j-1.6.1.jar,选择build path,选择add to build path,然后jar包就导入进去了
关于dom4j操作xml文件的使用方法,可以参看下载包中的docs文件下的index.html
注:每个jar包中都有一个快速使用jar的方法,对于这个dom4j就是点击左边栏中的quick start
1.2 dom_demo.xml内容如下:
<?xml version="1.0" encoding="utf-8"?>
<书架>
<书>
<书名>java web 开发</书名>
<售价>39.0</售价>
</书>
<书>
<书名>java核心技术</书名>
<作者>李九</作者>
<售价>40.0</售价>
</书>
<书>
<书名>c语言程序设计</书名>
<作者>王五</作者>
<售价>60</售价>
</书>
</书架>
1.3 XmlUtils.java
这个类是用来作为工具类使用的
package cn.zyf.utils; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.OutputStreamWriter; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class XmlUtils { private XmlUtils(){} public static Document getDocument() throws DocumentException{ SAXReader reader = new SAXReader(); return reader.read("src/dom_demo.xml"); } public static void writeDocument(Document document) throws IOException{ /* OutputStreamWriter os= new OutputStreamWriter(new FileOutputStream("src/dom_demo.xml"), "utf-8"); OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter( os, format ); *或者可以有另一种写法 */ OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(new FileOutputStream("src/dom_demo.xml"), format ); writer.write( document ); writer.close(); } }
1.4 DomXmlDemo.java代码如下
package cn.zyf.dom; import java.io.IOException; import java.util.Iterator; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.junit.Test; import cn.zyf.utils.XmlUtils; public class DomXmlDemo { /** * @param args * @throws DocumentException */
//curd
@Test public void elementFind() throws DocumentException{ //加载文档
Document document = XmlUtils.getDocument(); //获得根元素
Element root = (Element) document.getRootElement(); //System.out.println("根元素: "+ root.getName());
for(Iterator iter = root.elementIterator(); iter.hasNext();){ Element linkman = (Element)iter.next(); System.out.println("元素名为: "+ linkman.getName()); String bookName = linkman.elementText("书名"); String author = linkman.elementText("作者"); System.out.println("书名:"+ bookName + " 作者:" + author); } } //添加一个元素,书,书名:c语言程序设计,作者:王五,价格:60
@Test public void elementadd() throws DocumentException, IOException{ Document document = XmlUtils.getDocument(); Element root = (Element)document.getRootElement(); Element book = root.addElement("书"); //.addAttribute("书名", "c语言程序设计").addAttribute("作者", "王五").addAttribute("价格", "50");
Element bookName = book.addElement("书名").addText("c语言程序设计"); Element bookAuthor = book.addElement("作者").addText("王五"); Element bookPrice = book.addElement("售价").addText("60"); XmlUtils.writeDocument(document); } //添加属性
@Test public void attributeadd() throws DocumentException, IOException{ Document document = XmlUtils.getDocument(); Element root = (Element)document.getRootElement(); Element bookAuthor = root.element("书").element("作者"); bookAuthor.addAttribute("年龄", "30"); XmlUtils.writeDocument(document); } //修改第二本书的作者
@Test public void elementModify() throws DocumentException, IOException{ Document document = XmlUtils.getDocument(); Element root = (Element)document.getRootElement(); //获得作者
Element bookAuthor = ((Element)root.elements("书").get(1)).element("作者"); //修改名字
bookAuthor.setText("李九"); XmlUtils.writeDocument(document); } //删除指定的节点 //删除第一本书的作者
@Test public void elmentDelet() throws IOException, DocumentException{ Document document = XmlUtils.getDocument(); Element root = (Element)document.getRootElement(); Element bookAuthor = root.element("书").element("作者"); bookAuthor.getParent().remove(bookAuthor); XmlUtils.writeDocument(document); } }