DOM4J生成、解析XML实例

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.SAXReader;
import org.dom4j.io.XMLWriter;

/**
 *
 * dom4j生成与解析XML文档
 *
*/
public classDom4jDemo {

    /**
     * 利用dom4j进行xml文档的写入操作
     */
    public void createXml(File file) {

        // XML 声明 <?xmlversion="1.0" encoding="UTF-8"?> 自动添加到 XML文档中

        // 使用DocumentHelper类创建文档实例(生成 XML文档节点的 dom4jAPI工厂类)
        Document document =DocumentHelper.createDocument();

        // 使用addElement()方法创建根元素employees(用于向 XML 文档中增加元素)
        Element root =document.addElement("employees");

        // 在根元素中使用 addComment()方法添加注释"AnXML Note"
        root.addComment("An XMLNote");

        // 在根元素中使用addProcessingInstruction()方法增加一个处理指令
        root.addProcessingInstruction("target","text");

        // 在根元素中使用 addElement()方法增加employee元素。
        Element empElem =root.addElement("employee");

        // 使用 addAttribute()方法向employee元素添加id和name属性
        empElem.addAttribute("id","0001");
        empElem.addAttribute("name","wanglp");

        // 向employee元素中添加sex元素
        Element sexElem =empElem.addElement("sex");
        // 使用setText()方法设置sex元素的文本
        sexElem.setText("m");

        // 在employee元素中增加age元素 并设置该元素的文本。
        Element ageElem =empElem.addElement("age");
        ageElem.setText("25");

        // 在根元素中使用 addElement()方法增加employee元素。
        Element emp2Elem =root.addElement("employee");

        // 使用 addAttribute()方法向employee元素添加id和name属性
        emp2Elem.addAttribute("id","0002");
        emp2Elem.addAttribute("name","fox");

        // 向employee元素中添加sex元素
        Element sex2Elem =emp2Elem.addElement("sex");
        // 使用setText()方法设置sex元素的文本
        sex2Elem.setText("f");

        // 在employee元素中增加age元素 并设置该元素的文本。
        Element age2Elem =emp2Elem.addElement("age");
        age2Elem.setText("24");

        // 可以使用 addDocType()方法添加文档类型说明。
        //document.addDocType("employees", null,"file://E:/Dtds/dom4j.dtd");
        // 这样就向 XML 文档中增加文档类型说明:
        // <!DOCTYPE employees SYSTEM"file://E:/Dtds/dom4j.dtd">
        // 如果文档要使用文档类型定义(DTD)文档验证则必须有Doctype。

        try {
            XMLWriter output = newXMLWriter(new FileWriter(file));
            output.write(document);
            output.close();
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }

    /**
     * 利用dom4j进行xml文档的读取操作
     */
    public void parserXml(File file) {

        Document document = null;

        // 使用 SAXReader 解析 XML 文档catalog.xml:
        SAXReader saxReader = new SAXReader();

        try {
            document = saxReader.read(file);
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        // 将字符串转为XML
        // document = DocumentHelper.parseText(fileString);

        // 获取根节点
        Element root =document.getRootElement();
        // 打印节点名称
        System.out.println("<" +root.getName() + ">");

        // 获取根节点下的子节点遍历
        Iterator<?> iter =root.elementIterator("employee");
        // 遍历employee节点
        while (iter.hasNext()) {
            // 获取当前子节点
            Element empEle = (Element)iter.next();
            System.out.println("<"+ empEle.getName() + ">");

            // 获取当前子节点的属性遍历
            Iterator<?> attrList = empEle.attributeIterator();
            while (attrList.hasNext()) {
                Attribute attr = (Attribute)attrList.next();
               System.out.println(attr.getName() + "=" + attr.getValue());
            }

            // 遍历employee节点下所有子节点
            Iterator<?> eleIte =empEle.elementIterator();
            while (eleIte.hasNext()) {
                Element ele = (Element)eleIte.next();
               System.out.println("<" + ele.getName() + ">" +ele.getTextTrim());
            }

            // 获取employee节点下的子节点sex值
            // String sex =empEle.elementTextTrim("sex");
            //System.out.println("sex:" + sex);

        }
        System.out.println("</" +root.getName() + ">");
    }
 
 public static void main(String[] args) {

        Dom4jDemo dom4j = new Dom4jDemo();
        File file = newFile("e:/dom4j.xml");
        // dom4j.createXml(file);

        dom4j.parserXml(file);

    }
}
时间: 2024-10-06 18:13:45

DOM4J生成、解析XML实例的相关文章

java dom4j解析xml实例(2)

java利用dom4j解析xml 需要的jar包: dom4j官方网站在 http://www.dom4j.org/ 下载dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的话还需要加入包jaxen-1.1-beta-7.jar(如果不导入这个架包程序可以执行出结果,但最后会报异常) 将相关jar包引入后,实际解析操作如下:  1.要解析的xml文件province.xml: <china dn="d

java dom4j解析xml实例

java利用dom4j解析xml 需要的jar包: dom4j官方网站在 http://www.dom4j.org/ 下载dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的话还需要加入包jaxen-1.1-beta-7.jar(如果不导入这个架包程序可以执行出结果,但最后会报异常) 将相关jar包引入后,实际解析操作如下:  1.要解析的xml文件data.xml: <?xml version="1

dom4j解析xml实例

dom4j是一个java的XML API,类似jdom,用来读写XML文件,它性能优异.功能强大和极易使用等特点 所用jar包:dom4j-1.6.1.jar 需要解析的xml文件:people.xml Xml代码   <people city="shenzhen"> <student name="milton" age="22"></student> <student name="lego&q

dom4j解析xml实例(2)

dom4j是一个java的XML API,类似jdom,用来读写XML文件,它性能优异.功能强大和极易使用等特点 所用jar包:dom4j-1.6.1.jar.jaxen-1.1-beta-6.jar 需要解析的xml文件:people.xml <people city="shenzhen"> <student name="milton" age="22"></student> <student name

java dom4j解析xml实例(3)

代码运行前需要先导入dom4j架包. 需要解析的XML文件test.xml如下: <students> <student age="25"><!--如果没有age属性,默认的为20--> <name>崔卫兵</name> <college>PC学院</college> <telephone>62354666</telephone> <notes>男,1982年生,硕士

dom4j来解析xml,通过URL获取服务器端返回的字符串,java swing 实现的页面

1)使用dom4j来解析xml字符串内容 import org.dom4j.DocumentHelper; String domString = getDomString(); Document document = DocumentHelper.parseText(domString); List<Element> list = document.selectNodes("table/tr/td/div/div/span"); String str = list.get(

用Dom4j来解析XML文件

Dom4j jar包地址:https://pan.baidu.com/s/1eNExExlFHIecfW_6YkXpvw  提取码:w5om 首先解压Dom4j jar包,解压后如下 然后把  dom4j-1.6.1.jar  复制放到工程目录下(集成开发工具是myeclipse) 在myeclipse工程下直接右键dom4j-1.6.1.jar,点击Build Path → Add to Build Path myeclipse自动导入jar包,然后就可以使用jar包提供的接口了. 我们创建一

XML_05_DOM、JDOM、DOM4J解析XML实例

标签: xmlstringencoding文档tabledisk 2012-06-12 20:31 866人阅读 评论(0) 收藏 举报 分类: XML(7) java(44) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 一.DOM方式 原始name.xml [html] view plain copy <?xml version="1.0" encoding="GB2312" standalone="no"?&

JDOM生成、解析XML实例

import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import org.jdom.Attribute; import org.jdom.Comment; import org.jdom.Document; import org.jdom.Element; impo