常用解析XML的技术(SAX,DOM,JDOM)
原创
©著作权归作者所有:来自51CTO博客作者baiyan425的原创作品,请联系作者获取转载授权,否则将追究法律责任
解析是读取文档并分解为元素的过程
XML文档处理:
-解析器检查XML文档的有效性和格式规范
-创建解析树并传递给呈现代理程序
-呈现代理程序显示解析树
-解析器创建一系列对象,显示与XML文档关联的样式表
SAX(Simple API for XML)
-用于XML的简单API
-基于事件
-使用回调机制将事件通知应用程序
-org.xml.sax.*
包括:应用程序,创建解析器(将重要事件通知给文档处理程序),创建文档处理程序(处理通知).
Org.xml.sax.ContentHandler接口通用实现该接口给出自己的解析实现)
Org.xml.sax.DefaultHandler类(可以扩展该类,给出自己的解析实现)
startDocument()和endDocument()事件是在文档的起始处和结束处被激发的。 startElement() 和endElement()事件是在遇到起始标记和结束标记时被激发。Characters()事件是在遇到字符数据时被激发的。
使用SAX解析XML文档的步骤:
-创建SAXParserFactory的实例
-创建SAXParser的实例
-创建SAXParserHandler类
-使用parse()方法解析XML文档
DOM
-通过树型结构存取XML文档
-可在在树的某个节点上向前或向后移动
-org.w3c.dom.*
重要的类:Node,Document
Node-在DOM解析中是所有描述XML文档内容的最终抽象
-getNodeName() 获取XML元素的名字
-getNodeType() 获取节点的类型
-getChildNodes() 获取当前节点的子节点
-getAttribute() 获取属性
Document-用来描述一个XML文件,封装其内容
-getDocumentElement()方法获取XML输入文档的根元素
-CreateElement()创建一个元素
-CreateTextNode()创建一个文本结点
JDOM
开源的XML解析API.www.jdom.org下载 提供更高效,且更方便操作的XML解析处理
重要的类:
-Document 描述一个XML文件
-Element 描述XML中的一个元素
-Arribute 描述XML元素上的属性
-Text 描述XML文档中的PCDATA信息
-CDATA 描述XML
SAX解析与DOM解析比较而言,SAX是一种轻量型的方法。在处理DOM解析时,需要读入整个XML文件,然后在内存中创建DOM的树结构,包括生成DOM树上的每个节点对象。当文件比较小的时候,这不会造成什么问题,但是一旦文件大起来,处理DOM树就会耗费相当大的资源,以至于在某些应用中变得不实际。这时候,一个很好的替代方法就是SAX。不同于DOM解析的文档驱动,SAX解析是事件驱动的。也就是说,它并不专需要读入整个文档,而文档的读入过程也就是SAX的解析过程。所谓事件驱动,就是DEM。
XMLReader读入文档的过程和解析的过程是同时进行的。解析开始之前,需要向XMLReader注册一个ContentHander,也就是相当于一个事件监听器,在ContentHandler中定义了很多事件方法,作为对遇到一个XML标识符事件的相应访求。比如StartDocument(),它定义了在解析过程中遇到文档开始时采取的操作。当XMLReader读到合适的内容时,就会抛出相应的事件,并把事件的处理权委派给ContentHander,而后者则调用相应的方法作为响应。
XML文档的转换
-创建文档对象
-创建TransformerFactory的实例
-使用TransformerFactory实例创建Transformer的实例
-使用transform()方法将源树处理至输出结果中
-
解析是读取文档并分解为元素的过程
XML文档处理:
-解析器检查XML文档的有效性和格式规范
-创建解析树并传递给呈现代理程序
-呈现代理程序显示解析树
-解析器创建一系列对象,显示与XML文档关联的样式表
SAX(Simple API for XML)
-用于XML的简单API
-基于事件
-使用回调机制将事件通知应用程序
-org.xml.sax.*
包括:应用程序,创建解析器(将重要事件通知给文档处理程序),创建文档处理程序(处理通知).
Org.xml.sax.ContentHandler接口通用实现该接口给出自己的解析实现)
Org.xml.sax.DefaultHandler类(可以扩展该类,给出自己的解析实现)
startDocument()和endDocument()事件是在文档的起始处和结束处被激发的。 startElement() 和endElement()事件是在遇到起始标记和结束标记时被激发。Characters()事件是在遇到字符数据时被激发的。
使用SAX解析XML文档的步骤:
-创建SAXParserFactory的实例
-创建SAXParser的实例
-创建SAXParserHandler类
-使用parse()方法解析XML文档
DOM
-通过树型结构存取XML文档
-可在在树的某个节点上向前或向后移动
-org.w3c.dom.*
重要的类:Node,Document
Node-在DOM解析中是所有描述XML文档内容的最终抽象
-getNodeName() 获取XML元素的名字
-getNodeType() 获取节点的类型
-getChildNodes() 获取当前节点的子节点
-getAttribute() 获取属性
Document-用来描述一个XML文件,封装其内容
-getDocumentElement()方法获取XML输入文档的根元素
-CreateElement()创建一个元素
-CreateTextNode()创建一个文本结点
JDOM
开源的XML解析API.www.jdom.org下载 提供更高效,且更方便操作的XML解析处理
重要的类:
-Document 描述一个XML文件
-Element 描述XML中的一个元素
-Arribute 描述XML元素上的属性
-Text 描述XML文档中的PCDATA信息
-CDATA 描述XML
SAX解析与DOM解析比较而言,SAX是一种轻量型的方法。在处理DOM解析时,需要读入整个XML文件,然后在内存中创建DOM的树结构,包括生成DOM树上的每个节点对象。当文件比较小的时候,这不会造成什么问题,但是一旦文件大起来,处理DOM树就会耗费相当大的资源,以至于在某些应用中变得不实际。这时候,一个很好的替代方法就是SAX。不同于DOM解析的文档驱动,SAX解析是事件驱动的。也就是说,它并不专需要读入整个文档,而文档的读入过程也就是SAX的解析过程。所谓事件驱动,就是DEM。
XMLReader读入文档的过程和解析的过程是同时进行的。解析开始之前,需要向XMLReader注册一个ContentHander,也就是相当于一个事件监听器,在ContentHandler中定义了很多事件方法,作为对遇到一个XML标识符事件的相应访求。比如StartDocument(),它定义了在解析过程中遇到文档开始时采取的操作。当XMLReader读到合适的内容时,就会抛出相应的事件,并把事件的处理权委派给ContentHander,而后者则调用相应的方法作为响应。
XML文档的转换
-创建文档对象
-创建TransformerFactory的实例
-使用TransformerFactory实例创建Transformer的实例
-使用transform()方法将源树处理至输出结果中
-
下一篇:DTD补充

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Stable Diffusion中的常用术语解析
在使用stable diffusion的过程中,你会听到很多术语,是不是很迷茫这些词到底是做什么的?不用怕,看这篇文件就够了。
采样器 检查点 人工智能 AIGC 程序那些事 -
XML中DOM,Sax,JDom,Dom4j解析的区别
本篇博文介绍了XML解析中的DOM,SAX,JDOM,DOMJ 解析的区别
XMl Dom sax JDom Dom4j -
xml解析思想(原理) dom解析和sax解析dom解析和sax解析