java操作xml之dom4j的增删改查

来源:互联网 发布:网络打印机打印错误 编辑:程序博客网 时间:2024/05/16 19:07

注意,保存的时候一定要注意编码问题,你的xml文档的编码类型是什么就在format那里设置一样的,否则就会乱码的。

XML测试文档:

<?xml version="1.0" encoding="UTF-8"?><商店>   <商品>     <名称 name="hhhh">手机</名称>      <价格>1290</价格>      <数量>90部</数量>   </商品>    <商品>     <名称>电脑</名称>      <价格>11290</价格>      <数量>10台</数量>   </商品> </商店>

Demo1.java

package com.cx.dom4j;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;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 {    //读取指定标签    @Test    public void read() throws Exception {        //得到解析器        SAXReader reader = new SAXReader();        Document document = reader.read(new File("src/test.xml"));        //读取第一个        String price = document.getRootElement().element("商品").element("价格").getText();        //读取第二个        Element goods = (Element)document.getRootElement().elements("商品").get(1);        String price2 = goods.element("价格").getText();        //获取属性        String attr = document.getRootElement().element("商品").element("名称").attributeValue("name");        System.out.println(price);        System.out.println(price2);        System.out.println(attr);    }    //增加操作    @Test    public void add() throws Exception{        //获得解析器        SAXReader reader = new SAXReader();        //读取xml        Document document = reader.read(new File("src/test.xml"));        //处理xml,向第一个商品里添加一个优惠标签,在价格之前        //创建标签        Element cut = DocumentHelper.createElement("优惠");        cut.setText("7折");        //获得第一个商品下的所有标签        List list = document.getRootElement().element("商品").elements();        //此时,list的存放的数据为[名称、价格、数量]        list.add(1,cut);        //格式化        OutputFormat format = OutputFormat.createPrettyPrint();        format.setEncoding("UTF-8");//设置编码        //保存        XMLWriter writer = new XMLWriter(new FileOutputStream("src/test.xml"),format);        writer.write(document);        writer.close();    }    //删除操作    @Test    public void delete() throws DocumentException, IOException{        //得到解析器        SAXReader reader = new SAXReader();        Document document = reader.read(new File("src/test.xml"));        //删除属性        Element goods = document.getRootElement().element("商品").element("名称");        goods.remove(goods.attribute("name"));        //删除标签        Element cut = document.getRootElement().element("商品").element("优惠");        cut.getParent().remove(cut);        //格式化        OutputFormat format = OutputFormat.createPrettyPrint();        format.setEncoding("UTF-8");//设置编码        //保存        XMLWriter writer = new XMLWriter(new FileOutputStream("src/test.xml"),format);        writer.write(document);        writer.close();    }    //修改标签    @Test    public void update() throws Exception{        //取得解析器        SAXReader reader = new SAXReader();        Document document = reader.read(new File("src/test.xml"));        List<Element> list = document.getRootElement().elements("商品");        Element goods = list.get(1);        goods.element("名称").setText("999");        //格式化        OutputFormat format = OutputFormat.createPrettyPrint();        format.setEncoding("UTF-8");//设置编码        //保存        XMLWriter writer = new XMLWriter(new FileOutputStream("src/test.xml"),format);        writer.write(document);        writer.close();    }}
原创粉丝点击