使用DOM4J删除XML文件的内容

删除动作包括删除标签本身和删除标签的属性,需要注意的是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("[email protected]");
			}
		}

		// 把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();
	}
}


猜你喜欢

转载自blog.csdn.net/mchenys/article/details/80517970