1.XML是什么?
XML 被设计用来传输和存储数据,其焦点是数据的内容。HTML 被设计用来显示数据,其焦点是数据的外观。XML即可扩展标记语言(Extensible Markup language),你可以根据自己的需要扩展XML。XML中可以轻松定义<books>, <orders>
等自定义标签,而在HTML等其他标记语言中必须使用预定义的标签,比如<p>
,而不能使用用户定义的标签。使用DTD和XML Schema标准化XML结构。XML主要用于从一个系统到另一系统的数据传输,比如企业级应用的客户端与服务端。XML 数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。
有关XML文档构建模块请移步:http://www.runoob.com/dtd/dtd-building.html
2.什么是形式良好的XML文档?"形式良好"的 XML 文档拥有正确的语法:
- XML 文档必须有一个根元素
- XML元素都必须有一个关闭标签
- XML 标签对大小写敏感
- XML 元素必须被正确的嵌套
- XML 属性值必须加引号
3.什么是XML元素?
XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
一个元素可以包含:
- 其他元素
- 文本
- 属性
- 或混合以上所有...
<bookstore>
<book category="CHILDREN">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
在上面的实例中,<bookstore> 和 <book> 都有 元素内容,因为他们包含其他元素。<book> 元素也有属性(category="CHILDREN")。<title>、<author>、<year> 和 <price> 有文本内容,因为他们包含文本。
4.XML命名空间是什么?它为什么很重要?
XML命名空间与Java的package类似,用来避免不同来源名称相同的标签发生冲突。XML命名空间在XML文档顶部使用xmlns属性定义,语法为xmlns:prefix=’URI’。prefix与XML文档中实际标签一起使用。下面例子为XML命名空间的使用。
<root xmlns:inst="http://instruments.com/inst"
<inst:phone>
<inst:number>837363223</inst:number>
</inst:phone>
</root>
5.DOM和SAX解析器有什么区别?
NO | 区别 | DOM解析 | SAX解析 |
---|---|---|---|
1 | 操作 | 将所有文件读取到内存中形成DOM树,如果文件量过大,则无法使用 | 顺序读入所需要的文件内容,不会一次性全部读取,不受文件大小的限制 |
2 | 访问限制 | DOM树在内存中形成,可以随意存放或读取文件树的任何部分,没有次数限制 | 由于采用部分读取,只能对文件按顺序从头到尾读取XML文件内容,但不能修改 |
3 | 修改 | 可以任意修改文件树 | 只能读取XML文件内容,但不能修改 |
4 | 复杂度 | 易于理解,易于开发 | 开发上比较复杂,需要用户自定义事件处理器 |
5 | 对象模型 | 系统为使用者自动建立DOM树,XML对象模型由系统提供 | 对开发人员更加灵活,可以用SAX建立自己的XML对象模型 |
使用DOM解析时,XML文档以树形结构的形式加载到内存中,而SAX是事件驱动的解析器。
dom是w3c指定的一套规范标准,核心是按树形结构处理数据,dom解析器读入xml文件并在内存中建立一个结构一模一样的“树”,这树各节点和xml各标记对应,通过操纵此“树”来处理xml中的文件。xml文件很大时,建立的“树”也会大,所以会大量占用内存。
sax解析器占内存少,效率高。
sax解析器核心是事件处理机制。例如解析器发现一个标记的开始标记时,将所发现的数据会封装为一个标记开始事件,并把这个报告给事件处理器,事件处理器再调用方法(startElement)处理发现的数据。事件处理器可以自己编写也可以从父类继承。
所以DOM解析适合于修改,SAX解析适合于读取大型文件,2者结合的话可以用JDOM
6.什么是CDATA?
XML 文档中的所有文本均会被解析器解析。只有 CDATA 区段中的文本会被解析器忽略。
术语 CDATA 是不应该由 XML 解析器解析的文本数据。
像 "<" 和 "&" 字符在 XML 元素中都是非法的。
"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。
"&" 会产生错误,因为解析器会把该字符解释为字符实体的开始。
某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。
CDATA 部分中的所有内容都会被解析器忽略。
CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束:
具体详情请移步:http://www.runoob.com/xml/xml-cdata.html
http://www.cnblogs.com/qiantuwuliang/archive/2010/03/29/1699361.html
7.DTD与XML Schema有什么区别?
DTD 的目的是定义 XML 文档中合法的元素、属性和实体。通过使用 DTD,每个 XML 文件可以随身携带它自己的格式的描述。DTD 可以被用来确认您收到的数据和您自己的数据是否有效。
DTD不使用XML编写而XML Schema本身就是XML文件,且使用XML语法,这意味着XML解析器等已有的XML工具可以用来处理XML Schema。
8.什么是XML DOM?
DOM 定义了访问诸如 XML 和 HTML 文档的标准:
"W3C 文档对象模型(DOM,全称 Document Object Model)是一个使程序和脚本有能力动态地访问和更新文档的内容、结构以及样式的平台和语言中立的接口。"
XML DOM 是:
- 用于 XML 的标准对象模型
- 用于 XML 的标准编程接口
- 中立于平台和语言
- W3C 标准
XML DOM 定义了所有 XML 元素的对象和属性,以及访问它们的方法(接口)。
换句话说:XML DOM 是用于获取、更改、添加或删除 XML 元素的标准。
本文章大部分参考于:http://www.importnew.com/10839.html
http://www.runoob.com/xml/xml-tutorial.html