JAVA读取XML之SAX方式

xiaoxiao2021-02-28  104

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

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()方法,结果如下 :

Test Test1 node1 node2 node3 node4 Test1 node5 node6 node7
转载请注明原文地址: https://www.6miu.com/read-19256.html

最新回复(0)