dom4j追加节点

问题描述:
引用

<?xml version="1.0" encoding="UTF-8"?>
<data>
  <sb tdt="123" kk="111"/>
  <sb tdt="123" kk="222"/>
  <sb tdt="123" kk="333"/>
</data>
想增加一条纪录,变成如下格式
<?xml version="1.0" encoding="UTF-8"?>
<data>
  <sb tdt="123" kk="111"/>
  <sb tdt="123" kk="222"/>
  <sb tdt="123" kk="333"/>
  <sb tdt="123" kk="444"/>
</data>

实现方法如下:
package com.xuz.csdn.june26;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class XMLAddTest {

    public static void main(String[] args) {
        File file = new File("c:/test.xml");
        SAXReader reader = new SAXReader();
        Document doc = null;
        try {
            doc = reader.read(file);
        } catch (DocumentException e) {
            e.printStackTrace();
        }            
        Element dataElement = doc.getRootElement();
        Element sbNew = dataElement.addElement("sb");
        sbNew.addAttribute("tdt", "123");
        sbNew.addAttribute("kk", "444");
        
        try {
            FileOutputStream fos = new FileOutputStream(file);
            // 用于格式化输出
            // OutputFormat of = OutputFormat.createPrettyPrint();
            // 格式化输出的另一个形式,不知这两种有什么区别
            // 第1个参数为格式化输出缩排字符,此处为空格,第2个参数true为换行输出,false为单行输出
            OutputFormat of = new OutputFormat(" ", false);
            // 输出为GBK码解决在windows下某些系统下打开含有中文xml乱码的情况
            of.setEncoding("UTF-8");
            XMLWriter xw = new XMLWriter(fos, of);
            xw.write(doc);
            xw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

你可能感兴趣的:(java,C++,c,windows,xml)