zoukankan      html  css  js  c++  java
  • 使用dom4工具:增删改xml文件(七)

    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>
    


  • 相关阅读:
    Response.Redirect 产生的“正在中止线程”错误,不再执行下面语句解决办法
    c#中采用OLEDB方式来读取EXCEL文件和将数据写入EXCEL文件
    https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
    [bzoj2427][HAOI2010]软件安装——强连通分量+树形DP
    [bzoj3931][CQOI2015]网络吞吐量——最短路+网络流
    [bzoj1823][JSOI2010]满汉全席——2-SAT
    [bzoj1486][HNOI2009]最小圈——分数规划+spfa+负环
    [bzoj3532][Sdoi2014]Lis——拆点最小割+字典序+退流
    [bzoj3876][AHOI2014]支线剧情——上下界费用流
    [bzoj2127]happiness——最小割
  • 原文地址:https://www.cnblogs.com/mzywucai/p/11053417.html
Copyright © 2011-2022 走看看