java操作xml之dom4j的增删改查详解编程语言

注意,保存的时候一定要注意编码问题,你的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(); 
    } 
 
} 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/17922.html

(0)
上一篇 2021年7月19日 20:36
下一篇 2021年7月19日 20:36

相关推荐

发表回复

登录后才能评论