Java读写XML文件(DOM4J包)

来源:互联网 发布:linux mv 覆盖目录 编辑:程序博客网 时间:2024/06/05 00:27

1、解析XML文件

1.1、books.xml

<?xml version="1.0" encoding="UTF-8"?><bookstore>    <book id="1">        <name>深入分析JavaWeb技术内幕</name>        <author>许令波</author>        <year>2014</year>        <price>79</price>    </book>    <book id="2">        <name>Java并发编程实战</name>        <author>Brian Goetz等</author>        <year>2012</year>        <price>69</price>    </book></bookstore>

1.2、DOM4J解析类

需要导入dom4j.jar包:

package com.jtzen9.xml.read.dom4j;import java.io.File;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;// 解析books.xml文件public class DOM4JTest {    public static void main(String[] args) {        // 创建SAXReader的对象reader        SAXReader reader = new SAXReader();        try {            // 通过reader对象的read方法加载books.xml文件,获取docuemnt对象。            Document document = reader.read(new File("src/res/books.xml"));            // 通过document对象获取根节点bookstore            Element bookStore = document.getRootElement();            // 通过element对象的elementIterator方法获取迭代器            Iterator it = bookStore.elementIterator();            // 遍历迭代器,获取根节点中的信息(书籍)            while (it.hasNext()) {                System.out.println("=====开始遍历某一本书=====");                Element book = (Element) it.next();                // 获取book的属性名以及 属性值                List<Attribute> bookAttrs = book.attributes();                for (Attribute attr : bookAttrs) {                    System.out.println("属性名:" + attr.getName() + "--属性值:"                            + attr.getValue());                }                // 遍历book的子节点                Iterator itt = book.elementIterator();                while (itt.hasNext()) {                    Element bookChild = (Element) itt.next();                    System.out.println("节点名:" + bookChild.getName() +                                     "--节点值:" + bookChild.getStringValue());                }                System.out.println("=====结束遍历某一本书=====");            }        } catch (DocumentException e) {            e.printStackTrace();        }    }}

1.3、输出结果

=====开始遍历某一本书=====属性名:id--属性值:1节点名:name--节点值:深入分析JavaWeb技术内幕节点名:author--节点值:许令波节点名:year--节点值:2014节点名:price--节点值:79=====结束遍历某一本书==========开始遍历某一本书=====属性名:id--属性值:2节点名:name--节点值:Java并发编程实战节点名:author--节点值:Brian Goetz等节点名:year--节点值:2012节点名:price--节点值:69=====结束遍历某一本书=====

2、写入XML文件

2.1、DOM4J写入类

package com.jtzen9.xml.write;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;public class DOM4JTest {    private void createXML(){        //1.创建document对象,代表整个xml文档        Document document = DocumentHelper.createDocument();        //2.创建根节点rss        Element rss = document.addElement("rss");        //3.向rss节点中添加version属性        rss.addAttribute("version", "2.0");        //4.生成子节点及节点内容        Element channel = rss.addElement("channel");        Element title = channel.addElement("title");        title.setText("<![CDATA[测试测试测试测试测试]]>");        //5.设置生成xml的格式(缩进和换行)        OutputFormat format = OutputFormat.createPrettyPrint();        format.setEncoding("GBK"); //还可以设置编码格式        //6.生成xml文件        File file = new File("rssnews.xml");        XMLWriter writer;        try {            writer = new XMLWriter(new FileOutputStream(file), format);            //设置是否转义,默认值是true,代表转义            writer.setEscapeText(false);            writer.write(document);            writer.close();        } catch (IOException e) {            e.printStackTrace();        }    }    /**     * @param args     */    public static void main(String[] args) {        new DOM4JTest().createXML();    }}

2.2、生成的XML文件

<?xml version="1.0" encoding="GBK"?><rss version="2.0">  <channel>    <title><![CDATA[测试测试测试测试测试]]></title>  </channel></rss>

                                             
0 0
原创粉丝点击