package dom4j_write; import java.io.File; import java.io.FileOutputStream; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * 修改xml文件: * 添加:文档 标签 属性 * 修改:属性值 文本内容 * 删除:标签 属性 * * @author mzy * */ public class Demo03 { public static void main(String[] args) throws Exception{ /** * 添加:文档 标签 属性 */ // 1.1 添加空文档 Document doc = DocumentHelper.createDocument(); // ------------------------------- // 真正的操作 Element conListElem = doc.addElement("contact-list"); // 但是根标签不能添加多个 // 一层一层的加 Element conElem = conListElem.addElement("contact"); conElem.addElement("name"); // 添加属性 conElem.addAttribute("id", "001"); conElem.addAttribute("name", "mzy"); // ------------------------------- // 1.2 把文档写出到xml文件中 FileOutputStream out = new FileOutputStream("E:/user/eclipse_workStation/XML/src/dom4j_write/target03.xml"); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(out, format); writer.write(doc); /** * 修改:属性值 文本内容 * 将contact的属性值id=001,修改为id=003 * 在name标签中添加名字 */ doc = new SAXReader().read(new File("E:/user/eclipse_workStation/XML/src/dom4j_write/target03.xml")); // 修改属性值:method_1.先得到属性对象,再修改属性对象的值 conElem = doc.getRootElement().element("contact"); Attribute idAttr = conElem.attribute("id"); idAttr.setValue("003"); // 修改属性值:method_2.因为属性名不能重复,重复增加即覆盖 // conElem.addAttribute("id", "003"); // 修改文本 Element nameElem = doc.getRootElement().element("contact").element("name"); nameElem.setText("王五"); // 把文档写出到xml文件中:必须重置IO流,不然会接着上次结束的位置写 out = new FileOutputStream("E:/user/eclipse_workStation/XML/src/dom4j_write/target03.xml"); format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); /** * 删除:标签 属性内容 * 将contact的属性值id=001,修改为id=003 */ // 1.1 删除标签 conElem = doc.getRootElement().element("contact"); // conElem.detach(); // 删除当前的标签 // conElem.getParent().remove(conElem); // 获取父标签再删除子标签 // 1.2 删除属性 Attribute attr = doc.getRootElement().element("contact").attribute("id"); attr.detach(); writer = new XMLWriter(out, format); writer.write(doc); } }
xml格式如下:
<?xml version="1.0" encoding="utf-8"?> <contact-list> <contact name="eric"> <name>王五</name> </contact> </contact-list>