一、 XML解析:指读取XML文档,分析其结构,获取数据的过程
1. 目前有两套标准--独立于程序设计语言
DOM:W3C组织推荐的处理XML的标准接口
SAX:Simple API for XML是另一种处理XML的“民间”标准
2. JAXP(Java API for XML Processing)规范:定义了在Java中使用DOM, SAX, XSLT的通用接口。
JAXP允许开发人员以独立于厂商的API调用访问XML数据,而在更换解析器时,不用对已发布的程序做任何改动。
JDK默认使用的解析器就是Apache的Xerces。
二、DOM解析方式
1. 原理:通过解析XML文档,为XML文档在逻辑上建立一个树模型,树的每个节点是一个对象。通过存取这些对象就能够操作XML文档中的内容。
2. 优点:
采用建立树形结构的方式访问 XML文档,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。
可以在任何时候在树中上下导航。
易用性强,遍历简单。
支持XPath(XML Path Language):使用路径表达式来选取 XML 文档中的节点或节点集
3. 缺点:
解析效率低、速度慢、内存占用量过高
对于大文件来说几乎不可能使用
4. JAXP中针对DOM解析提供的接口和类:
1) javax.xml.parsers包
DocumentBuilderFactory抽象类:主要用于定义工厂API,使应用程序能够从XML文档获取生成DOM对象树的解析器。
DocumentBuilder抽象类:主要用于从XML文档获取DOM文档实例。
2) org.w3c.dom包
Node接口:表示文档树中的节点。是Document、Element、Attr、Text、Comment等接口的父接口。
Document接口:表示整个HTML或XML文档。Document接口是对文档进行操作的入口,它从Node接口继承过来。
NodeList接口:提供对节点的有序集合的抽象。
NamedNodeMap接口:表示的是一组节点和其唯一名称的一一对应关系,这个接口主要用在属性节点的表示上。
3) javax.xml.xpath包
XPathFactory抽象类:用于创建XPath对象。
XPath接口:提供了对XPath计算环境和表达式的访问。
XPathContants常量类:列举了XPath的返回值类型。
二、SAX解析方式
1. 原理:对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束等地方时通知事件处理方法,由事件处理方法做相应动作,然后继续同样的扫描,直至文档结束。
SAX在读取文档的时候,即对它进行处理,解析完毕即处理也就完成了,而不必等到整个文档被分析存储后才开始进行操作。
2. 优点:
基于事件模型,处理速度快
内存消耗少
3. 缺点:
不能修改文档,只能访问文档内容
不能随机访问 ,只能顺序访问
4. JAXP中针对SAX解析提供的接口和类:
1) javax.xml.parsers包
SAXParserFactory类:创建XML解析器的工厂类
SAXParser
2) org.xml.sax.helpers包
DefaultHandler类:是SAX2事件处理程序的默认基类。它继承了EntityResolver、DTDHandler、ContentHandler和ErrorHandler这四个接口。
包含这四个接口的所有方法,所以我们在编写事件处理程序时,可以不用直接实现这四个接口,而继承该类,然后重写我们需要的方法。
a) void startDocument(); //遇到文档开始时回调的方法
b) void startElement(String uri, String localName, String qName, Attributes attributes); //遇到元素的开始标记时回调的方法
c) void endElement(String uri, String localName, String qName); //遇到元素的结束标记时回调的方法
d) void endDocument(); //遇到文档结束时回调的方法
e) void characters(char[] ch, int start, int length); //遇到元素的字符数据时回调的方法
三、开源xml解析包
1. jdom:使用SAX解析器来分析XML文档,构建DOM树。
★2. dom4j:使用SAX解析器来分析XML文档,构建DOM树。早期开发JDOM的人分离出来而后独立开发
四、练习:使用dom4j解析jdbc.xml文件,从中获取mysql的所有连接参数值。并输入在控制台中。
xml-demo.rar_DEMO_blue j_demo.xml_xml demo_做xml的demo
版权申诉
144 浏览量
2022-09-14
20:24:21
上传
评论
收藏 497KB RAR 举报
APei
- 粉丝: 63
- 资源: 1万+
最新资源
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- 关于mybatis的一些相关资源
- 关于mybatist的一些相关资源
- uni-app实战社区交友类app开发&带视频教程
- mybatis动态sql的一些相关资源
- 隐马尔可夫模型在期货市场的应用_曾琦裕 (1).caj
- 极域解控和极域反控!!!
- 安卓android-serialport-api 串口demo源代码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈