JAVA读取XML之SAX方式

来源:互联网 发布:云杉网络 新三板 编辑:程序博客网 时间:2024/06/05 02:48

好记性不如赖笔头…………

XML文件:XmlDemo.xml<?xml version="1.0" encoding="UTF-8"?><Test>   <Test1 >     <node1>TestName</node1>      <node2>TestDemo</node2>      <node3>4</node3>      <node4>5</node4>   </Test1>    <Test1>     <node5>TestName-JAVA</node5>      <node6>TestDemo-1</node6>      <node7>99</node7>   </Test1> </Test>

读取示例文件:

package com.ckinghan.xml;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.Node;import org.dom4j.io.SAXReader;import org.junit.Test;public class ReaderXmlDemo {    /**     * @描述:读取指定元素的文本内容     * @时间:2017年6月6日17:42:54     * @注意:     * @作者:Ckinghan     * @throws DocumentException     */    @Test    public void readXml() throws DocumentException{        //创建读取对象        SAXReader reader = new SAXReader();        //读取文件        Document document = reader.read("src/XmlDemo.xml");        //获取文件的根节点        Element root = document.getRootElement();        //获取根结点下的子节点,返回的是一个List集合        List<Element> elements = root.elements();        //获取集合的第二个数据,并获取名称为"书名"的节点,再获取此节点下的文本内容         String text = elements.get(1).element("node5").getText();        //打印获取到的文本内容         System.out.println(text);    }    /**     * @描述:遍历XML文件的所有节点名称     * @时间:2017年6月6日17:45:48     * @注意:     * @作者:Ckinghan     * @throws DocumentException     */    @Test    public void readXmlNode() throws DocumentException{        //创建读取对象        SAXReader reader = new SAXReader();        //读取文件        Document document = reader.read("src/XmlDemo.xml");        //获取文件的根节点        Element root = document.getRootElement();        //调用readNode方法遍历节点        readNode(root);    }    /**     * @描述:使用递归方式遍历元素节点     * @时间:2017年6月6日17:47:45     * @注意:     * @作者:Ckinghan     * @param element     */    public void readNode(Element element){        //输出节点名称        System.out.println(element.getName());        //获取element元素的节点数量,并循环获取节点        for(int i = 0; i < element.nodeCount(); i++){            //获取当前循环次数的节点内容             Node node = element.node(i);                    //如果当前节点是Element元素节点            if(node instanceof Element){                //再次读取此元素节点内容                 readNode((Element)node);            }        }    }}

执行readXml()方法,结果如下:

TestName-JAVA

执行readXmlNode()方法,结果如下 :

TestTest1node1node2node3node4Test1node5node6node7
原创粉丝点击