【xml之Dom4j解析】

来源:互联网 发布:删除淘宝差评的链接 编辑:程序博客网 时间:2024/04/28 20:35

book.xml

<?xml version="1.0" encoding="gb2312"?><!DOCTYPE 书架 SYSTEM "book.dtd"><书架>  <书>    <书名 name="xxx">Java就业培训教程</书名>    <作者>张孝祥</作者>  </书>  <书>    <书名 name="yyy">JavaScript网页开发</书名>    <作者>5</作者>    <售价>28.00元</售价>  </书></书架>

demo.java

import java.io.File;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.OutputStreamWriter;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;import org.junit.Test;public class demo1 {      //读第 1本书的信息       @Test      public void read() throws Exception      {           SAXReader reader = new SAXReader();           Document document = reader.read("book.xml");           Element book= (Element) document.getRootElement().elements("书").get(0);           String value=book.element("书名").getText();           String attributeValue=book.element("书名").attributeValue("name");           System.out.println(value  +";"+attributeValue);      }          //在第一本上添加一个新的售价      @Test      public void add() throws Exception{          SAXReader reader=new SAXReader();          Document document=reader.read(new File("book.xml"));          Element book=document.getRootElement().element("书");          book.addElement("售价").setText("222");                                 OutputFormat format = OutputFormat.createPrettyPrint();          format.setEncoding("gb2312");          XMLWriter writer=new XMLWriter(new FileOutputStream("book.xml"), format);          writer.write(document);          writer.close();      }            //在第一本书指定位置上添加一个新的售价,更改List集合      @Test      public void add2() throws Exception{          SAXReader reader=new SAXReader();          Document document=reader.read(new File("book.xml"));                    Element book=document.getRootElement().element("书");          List list=book.elements();//[书名,作者,售价]                    Element price=DocumentHelper.createElement("售价0");          price.setText("309元");          list.add(0,price);                      OutputFormat format = OutputFormat.createPrettyPrint();          format.setEncoding("gb2312");          XMLWriter writer=new XMLWriter(new FileOutputStream("book.xml"), format);          writer.write(document);          writer.close();      }          //删除上面的节点      @Test      public void delete() throws Exception {          SAXReader reader=new SAXReader();          Document document=reader.read(new File("book.xml"));          Element price=document.getRootElement().element("书").element("售价");          price.getParent().remove(price);                  OutputFormat format = OutputFormat.createPrettyPrint();          format.setEncoding("gb2312");          XMLWriter writer=new XMLWriter(new FileOutputStream("book.xml"), format);          writer.write(document);          writer.close();     }          //更新节点      @Test      public void update() throws Exception{          SAXReader reader=new SAXReader();          Document document=reader.read(new File("book.xml"));                Element book=(Element) document.getRootElement().elements("书").get(1);          book.element("作者").setText("5");                    OutputFormat format = OutputFormat.createPrettyPrint();          format.setEncoding("gb2312");          XMLWriter writer=new XMLWriter(new FileOutputStream("book.xml"), format);          writer.write(document);          writer.close();           }  }  

解决乱码问题:
//        format.setEncoding("gb2312");  //        XMLWriter writer=new XMLWriter(new FileWriter("book.xml"), format);//因为FileWriter的默认编码是gb2312,所以format的编码格式只能设置成gb2312        //        format.setEncoding("utf-8"); //gb2312 //        XMLWriter writer=new XMLWriter(new OutputStreamWriter(new FileOutputStream("book.xml"),"utf-8"), format);//gb2312         //        format.setEncoding("utf-8");//gb2312 //        XMLWriter writer=new XMLWriter(new FileOutputStream("book.xml"), format);//FileOutputStream会去查format的编码


0 0
原创粉丝点击