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/17922.html

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

相关推荐

发表回复

登录后才能评论