XML知识
XML(ExtensibleMarkupLanguage),是W3C组织发布和维护的。
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文件来显示文档内容。例如:
@H_502_107@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解析原理图:
原文链接:https://www.f2er.com/xml/298394.html