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