关闭

如何用DOM生成和修改XML文件

363人阅读 评论(0) 收藏 举报
分类:

我们一般都知道如何用DOM去读取XML文件的内容, DOM读取XML文件的时候会把整个XML文件映射到一棵内存树,如果通过DOM API中修改了这棵XML内存树,并不会反映到原XML文件,我们要想把修改或运行期间创建的XML内容保存到磁盘系统,可以用Transformer来实现。下面代码演示了该如何编程

public class DOMTester {
    public static void main(String[] args) {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder db = dbf.newDocumentBuilder();
            updateDocument(db);//修改XML文档
            newDocument(db);//创建新XML文档
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void updateDocument(DocumentBuilder db) throws SAXException, IOException {
        Document doc = db.parse(DOMTester.class.getResourceAsStream("test.xml"));
        Element root = doc.getDocumentElement();
        root.setAttribute("name","chinajash");
        Element catalog3 = doc.createElement("catalog");
        catalog3.setAttribute("id","003");
        catalog3.setTextContent("Music");
        root.appendChild(catalog3);
        writeXML(doc, "test.xml");
    }

    private static void newDocument(DocumentBuilder db) throws SAXException, IOException {
        Document doc = db.newDocument();
        Element root = doc.createElement("root");
        doc.appendChild(root);
        root.appendChild(doc.createElement("new"));
        writeXML(doc, "new.xml");
    }

    private static void writeXML(Document doc, String file) {
        try {
            Transformer t = TransformerFactory.newInstance().newTransformer();
            t.setOutputProperty("indent", "yes");
            t.transform(new DOMSource(doc), new StreamResult(new FileOutputStream(file)));
        } catch (TransformerException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();  
        }
    }
}

原test.xml的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<catalogs>
    <catalog id="001">Book</catalog>
    <catalog id="002">Video</catalog>
</catalogs>

上面程序修改了这个文件,运行后生成新的test.xml内容如下:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<catalogs name="chinajash">
    <catalog id="001">Book</catalog>
    <catalog id="002">Video</catalog>
    <catalog id="003">Music</catalog>
</catalogs>
 

上面程序运行后新产生的new.xml内容如下:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<root>
    <new />
</root>

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:217629次
    • 积分:2475
    • 等级:
    • 排名:第14974名
    • 原创:13篇
    • 转载:126篇
    • 译文:0篇
    • 评论:24条
    文章分类
    最新评论