码迷,mamicode.com
首页 > 其他好文 > 详细

DOM4J读写XML

时间:2014-12-26 00:57:39      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

需要JAR包:dom4j-1.6.1.jar

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.dom4j.tree.BaseElement;

public class Dom4jXml {

    // 创建XML文档
    public static void createDocument() {
        try {
            // 创建文档
            Document doc = DocumentHelper.createDocument();
            // 添加根元素
            Element root = doc.addElement("UserInfo");
            // 添加注释
            root.addComment("An XML UserInfo");
            // 创建子元素
            Element user = new BaseElement("User");
            // 添加子元素并设置文本内容
            user.addElement("name").setText("张三");
            user.addElement("age").setText("20");
            // 添加子元素到根元素
            root.add(user);
            // 创建子元素
            Element user2 = new BaseElement("User");
            // 添加属性
            user2.addAttribute("name", "李四");
            user2.addAttribute("age", "25");
            // 添加子元素到根元素
            root.add(user2);
            // 设置缩减型格式
            OutputFormat format = OutputFormat.createPrettyPrint();
            // 设置紧凑型格式
            // OutputFormat format = OutputFormat.createCompactFormat();
            // 设置编码
            format.setEncoding("UTF-8");
            // 写入到文件
            XMLWriter output = new XMLWriter(new FileWriter(new File(
                    "C:\\Users\\Yangyuan\\Desktop\\test\\test.xml")), format);
            output.write(doc);
            output.close();
            System.out.println("创建XML文档完成");
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    // 修改XML文档
    @SuppressWarnings("unchecked")
    public static void updateDocument() {
        try {
            //获得DOC文档
            File file = new File("C:\\Users\\Yangyuan\\Desktop\\test\\test.xml");
            SAXReader reader = new SAXReader();
            Document doc = reader.read(file);
            // 获得根节点
            Element root = doc.getRootElement();
            // 获得根节点下的所有子节点
            Iterator it = root.elementIterator();
            // 遍历子节点
            while (it.hasNext()) {
                Element ele = (Element) it.next();
                // 获得节点下面的所有子节点
                Iterator users = ele.elementIterator();
                // 遍历子节点
                while (users.hasNext()) {
                    Element usele = (Element) users.next();
                    // 判断节点名称是否为name
                    if (usele.getName().equals("name")) {
                        // 修改节点的文本值
                        usele.setText(usele.getText() + "_001");
                    }
                }
                // 获得节点的name属性
                Attribute attribute = ele.attribute("name");
                if (attribute != null) {
                    // 修改属性值
                    attribute.setValue(attribute.getValue() + "_002");
                }
            }
            // 写入到文件
            OutputFormat format = OutputFormat.createPrettyPrint();
            format.setEncoding("UTF-8");
            XMLWriter writer = new XMLWriter(new FileWriter(file), format);
            writer.write(doc);
            writer.close();
            System.out.println("修改XML文档完成");
        } catch (DocumentException e) {
            System.out.println(e);
        } catch (IOException e) {
            System.out.println(e);
        }
    }

    public static void main(String[] args) {
        createDocument();
        updateDocument();
    }

}

 

运行后XML内容如下:

技术分享

DOM4J读写XML

标签:

原文地址:http://www.cnblogs.com/heheyy/p/4185889.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!