xml基础及其解析原理
XML知识 XML(ExtensibleMarkupLanguage),是W3C组织发布和维护的。 XML允许用户自定义细节,标签用来描述一段数据,分为开始标签和结束标签。XML主要用来存储数据和用作配置文件信息。 一个XML文件分为如下几部分内容: 1.文档声明 2.元素 3.属性 4.注释 5.CDATA区、特殊字符 6.处理指令(processinginstruction) XML文档声明: <?xmlversion="1.0"encoding="UTF-8"standalone="yes"?> Standalone指明文档是否是独立的 XML元素指XML文件中出现的标签,一个标签分为开始标签和结束标签,一个标签有如下几种书写形式,例如: 包含标签体:<a>www.itcast.cn</a> 不含标签体的:<a></a>,简写为:<a/> 注意: 对于xml标签中出现的所有空格和换行,xml解析程序都会当做便签内容处理。Java获取后可能需要用trim()过滤。 Xml元素区分大小写;不能以数字或下划线开头;不能以xml(或Xml、XML等)开头;不能包含空格;名称中间不能包含冒号。 一个标签可以有多个属性,每个属性都有它自己的名称和取值,例如: <inputname=“text”> 属性值一定要用双引号(")或单引号(')引起来 定义属性必须遵循与标签相同的命名规范 多学一招:在XML技术中,标签属性所代表的信息,也可以被改成用子元素的形式来描述,例如: <input> <name>text</name> </input> Xml的注释的形式<!--注释--> Xml声明之前不能有注释; Xml注释不能嵌套。 CDATA区:xml文档中有些内容不希望让解析引擎解析执行,而是当做原始数据处理,此时可以将这些内容放到CDATA区中。 <![CDATA[ <安徽> <安庆> </安庆> <合肥> </合肥> </安徽> ]]>
Xml可以使用xml-stylesheet指令,通知xml解析引擎应用css文件来显示文档内容。例如: xml-stylesheettype="test/css"href=""?>
转义字符:
Xml约束:在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。常用的约束技术: XMLDTD、XMLSchema XMLDTD不能具体约束到数字,而只能约束到字符串,例如价格为必须为数字,DTD则只能约束到字符串。DTD现在没有Schema有前景。 Xml编程: Xml解析方式分为两种:dom和sax dom:(DocumentObjectModel,即文档对象模型)是W3C组织推荐的处理XML的一种方式。 sax:(SimpleAPIforXML)不是官方标准,但它是XML社区事实上的标准,几乎所有的XML解析器都支持它。 XML解析器Crimson、Xerces、Aelfred2 XML解析开发包Jaxp(sun官方)、Jdom、dom4j JAXP开发包是J2SE的一部分,它由javax.xml、org.w3c.dom、org.xml.sax包及其子包组成。在javax.xml.parsers包中,定义了几个工厂类,程序员调用这些工厂类,可以得到对xml文档进行解析的DOM或SAX的解析器对象。 Dom与sax比较: Dom比较消耗内存,因为他要把整个文档变成document对象,适合于xml的增删改查(crud); Sax是逐行读取解析,占用内存少,解析速度快,缺点是只适合作文档的读取,不能做文档的crud。 使用dom解析,如果文档很大,会导致jvm内存溢出。Jvm默认最大内存64M。在eclipse中的runconfigurations中arguments中vmarguments中输入-Xmx80m(配置为80M)。 DOM解析编程: 遍历所有节点 查找某一个节点 删除结点 更新结点 添加节点 SAX采用事件处理的方式解析XML文件,利用SAX解析XML文档,涉及两个部分:解析器和事件处理器: 解析器可以使用JAXP的API创建,创建出SAX解析器后,就可以指定解析器去解析某个XML文档。 解析器采用SAX方式在解析某个XML文档时,它只要解析到XML文档的一个组成部分,都会去调用事件处理器的一个方法,解析器在调用事件处理器的方法时,会把当前解析到的xml文件内容作为方法的参数传递给事件处理器。 事件处理器由程序员编写,程序员通过事件处理器中方法的参数,就可以很轻松地得到sax解析器解析到的数据,从而可以决定如何对数据进行处理。 sax解析原理图:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |