删除动作包括删除标签本身和删除标签的属性,需要注意的是xml文档结构一旦变化,必须要重新写出到文件,否则不会生效.
下面通过Demo直接演示:
package demo1;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
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 UpdateTest {
@Test
public void testUpdate() throws Exception {
// 创建xml文件的解释器
SAXReader reader = new SAXReader();
Document document = reader.read(new File("person.xml"));
// 获取根元素
Element rootEle = document.getRootElement();
// 获取所有直接子元素
List<Element> persons = rootEle.elements();
for (Element person : persons) {
//获取id属性
String id = person.attributeValue("id");
// 删除id属性=110的person元素
if ("110".equals(id)) {
//删除一个元素的时候必须是由其直接父元素来删除
rootEle.remove(person);
}
// 删除id属性
Attribute attribute = person.attribute("id");
person.remove(attribute);
// 修改文本内容
if ("220".equals(id)) {
//修改email元素的文本内容
Element element = person.element("email");
element.setText("22222@qq.com");
}
}
// 把document最新的状态生成一个xml文件
writeXml(document);
}
// 把一个document写出到xml文件上。
public void writeXml(Document document) throws IOException {
// 输出的格式器
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
outputFormat.setEncoding("gbk");
// xmlWriter
FileWriter fileWriter = new FileWriter("data.xml");
XMLWriter xmlWriter = new XMLWriter(fileWriter, outputFormat);
xmlWriter.write(document);
xmlWriter.close();
}
}