前言:
开发中将数据存储在xml后,希望通过程序获得xml的内容,获取的方式有很多种,开发中比较常见的解析方式有三种:DOM解析,SAX解析、PULL解析,它们各自有各自的优缺点和应用的场景。
三种解析方式:
1、DOM:要求解析器把整个xml文档装载到内存,解析成一个Document对象。
优点:元素与元素之间保持结构关系,可以进行增删改查操作。
缺点:xml文档过大时可能出现内存溢出显示。
2、SAX:是一种速度更快,更有效的方法。它逐行扫描文档,边扫描编解析,并以件驱动的方式进行具体解析,每执一行,都将触发对应的事件。
优点:出来速度快,可以处理大文件。
缺点:只读,逐行后将释放资源。
3、PULL:Android内置的xml解析方式,和SAX类似。
解析器是根据不同的解析方式提供的具体实现,但有的解析器操作过于繁琐,由此,为了方便开发,提供了易于操作的解析开发包。
常见的解析开发包:JAXP、JDom(dom4j兄弟)、jsoup、dom4j(较常用)
实践:
XML DOM和HTML DOM类似,它将整个xml文档加载到内存,生成一个DOM树,并获得一个Document对象,通过Document对象可以对DOM进行操作。
1、使用dom4j前提,导入jar包
dom4j使用核心类SaxReader加载xml文档获得Document,通过Document对象获得文档的跟元素,然后再进行操作。
2、目录结构:
3、web.xml
在xml中使用Schema约束,必须包含制定的命名空间。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://www.example.org/web-app_2_5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>hellodoM4j</servlet-name> <servlet-class>**********</servlet-class> </servlet> <servlet-mapping> <servlet-name>hellodoM4j</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>4、TestDom4j.java
package cn.ytm.xml.dom4j; import java.util.List; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.junit.Test; public class TestDom4j { @Test public void testReadWebXML(){ try { //1、获取解析器 SAXReader saxReader=new SAXReader(); //2、获取document文档对象 Document doc=saxReader.read("src/cn/ytm/xml/schema/web.xml"); //3、获取根元素 Element rootElement=doc.getRootElement(); System.out.println(rootElement.getName()); //获取根元素的名称 System.out.println(rootElement.attributeValue("version"));//获取元素中的属性值 //4、获取跟元素下的子元素 List<Element> childElements=rootElement.elements(); //5、遍历子元素 for (Element element : childElements) { //6、判断元素名称为servlet的元素 if ("servlet".equals(element.getName())) { //7、获取servlet-name元素 Element servletName=element.element("servlet-name"); //8、获取servlet-class元素 Element servletClass=element.element("servlet-class"); System.out.println(servletName.getText()); System.out.println(servletClass.getText()); } } } catch (Exception e) { e.printstacktrace(); } } }
结果:
原文地址:https://www.jb51.cc/xml/293506.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。