利用DOM4J中SAXReader来快速读取xml文档,同时使用Document来快速操作xml文档元素

所需被读取的xml文档内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<persons> 
  <person id="1"><![CDATA[test1]]></person>  
  <person id="2"><![CDATA[test2]]></person>
</persons>

具体Java代码实现如下:

public class ChangeXml {

    public static void main(String[] args) {

        // 获取 persons.xml 文件 路径
        String path = ChangeXml.class.getClassLoader().getResource("person.xml").getPath();

        // 获取到 persons.xml 文件对象
        File file = new File(path);

        // 读取 persons.xml 文档里面的内容
        // 1、利用 SAXReader 对象
        SAXReader saxReader = new SAXReader();
        Document doc = null;
        try {
            // 获取 Doc 文档对象
            doc = saxReader.read(file);
            // 获取 根节点
            Element root = doc.getRootElement();
            // 获取根节点下面所有子节点元素
            List<Element> eles = root.elements();

            Element e3 = DocumentHelper.createElement("person");
            Attribute attr3 = DocumentHelper.createAttribute(e3,"id","3");
            e3.add(attr3);
            e3.addCDATA("test3");
            // 将 e3 元素添加到 element 集合中去
            eles.add(e3);



        } catch (DocumentException e) {
            e.printStackTrace();
        }


        // 按照 UTF-8 编码 对文档进行格式化
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("UTF-8");

        // 利用 XMLWriter 类 将内容输出到 person.xml 文件中
        XMLWriter writer = null;
        try {
            writer = new XMLWriter(new FileOutputStream(file),format);
            if(writer != null && doc != null) {
                writer.write(doc);
                writer.close();
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

最终运行结果如下:

<?xml version="1.0" encoding="UTF-8"?>

<persons> 
  <person id="1"><![CDATA[test1]]></person>  
  <person id="2"><![CDATA[test2]]></person>  
  <person id="3"><![CDATA[test3]]></person>
</persons>