|
楼主 |
发表于 2016-10-17 10:40
|
显示全部楼层
本帖最后由 liu-aguang 于 2016-10-18 11:30 编辑
五. XML文档解析
1. XML文档结构
<1>什么是XML?
前面已经知道, json是用来存储和传输数据的. 还有一种与json相同功能的"重量级"文件--XML, 它也是Web中较为常见的数据网页.不过它不用数组或对象来组织数据, 而是用标记来组织. 如:下面是一个用XML格式存储的两本书的相关信息(书名,作者,出版年,价格)的例子.
<?xml version="1.0" encoding="ISO-8859-1"?> '第一行通常是XML声明xml版本,所用编码.
<bookstore>
<book category="COOKING">
<title lang="en">水浒传</title>
<author>(明)施耐庵</author>
<year>2005</year>
<price>20.00</price>
</book>
<book category="CHILDREN">
<title lang="en">红楼梦</title>
<author>(清)曹雪芹</author>
<year>2005</year>
<price>20.00</price>
</book>
</bookstore>
XML 指可扩展标记语言(EXtensible Markup Language),是纯文本. 可以看出,结构上XML与HTML很相似,但它们俩为不同目的而设计:
...XML 被设计为传输和存储数据,其焦点是数据的内容。
...HTML 被设计用来显示数据,其焦点是数据的外观。
...HTML 旨在显示信息,而 XML 旨在传输信息。
...XML标签没有被预定义,您需要自行定义标签; HTML标签是预定义的.
...XML被设计为具有自我描述性。
<2>XML语法特征
...所有 XML 元素都须有关闭标签
如:<book>....</book>
...XML 标签对大小写敏感
如: <Message>这是错误的。</message>
...XML 必须正确地嵌套
如:<b><i>This text is bold and italic</b></i>
在HTML中不会出问题,但在XML中是错误的.
...XML 文档必须有根元素
XML 文档必须有一个元素是所有其他元素的父元素。该元素称为根元素。
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
<3>XML文档的树形结构
在描述HTML树时, 我们用了标签,元素,属性,节点以及表达节点之间关系时的先辈/后代,父/子/同胞等概念.在XML中同样适用. 在解析XML文档时, 首先要转化为XML DOM(XML文档模型(对象)).
根据 DOM,XML 文档中的每个成分都是一个节点。
DOM 是这样规定的:
- 整个文档是一个文档节点
- 每个 XML 标签是一个元素节点
- 包含在 XML 元素中的文本是文本节点
- 每一个 XML 属性是一个属性节点
- 注释属于注释节点
在上面的 XML 中,根节点是 <bookstore>。文档中的所有其他节点都被包含在 <bookstore> 中。
根节点 <bookstore> 有四个 <book> 节点。
第一个 <book> 节点有四个节点:<title>, <author>, <year> 以及 <price>,其中每个节点都包含一个文本节点,"水浒传", "(明)施耐庵", "2005" 以及 "20"。
文本总是存储在文本节点中在 DOM 处理中一个普遍的错误是,认为元素节点包含文本。
不过,元素节点的文本是存储在文本节点中的。
在这个例子中:<year>2005</year>,元素节点 <year>,拥有一个值为 "2005" 的文本节点。
"2005" 不是 <year> 元素的值!
各节点彼此间有等级关系:
父、子和同级节点用于描述这种关系。父节点拥有子节点,位于相同层级上的子节点称为同级节点(兄弟或姐妹)。
- 在节点树中,顶端的节点成为根节点
- 根节点之外的每个节点都有一个父节点
- 节点可以有任何数量的子节点
- 叶子是没有子节点的节点
- 同级节点是拥有相同父节点的节点
下面的图片展示出节点树的一个部分,以及节点间的关系:
<4>几个XML实例
(提示: 你可以用Fiddler记录打开以下链接后的会话, 在Fiddler中观察XML的树形结构)
一个XML的目录
http://www.w3school.com.cn/example/xmle/cd_catalog.xml
一个XML的植物目录
http://www.w3school.com.cn/example/xmle/plant_catalog.xml
一个简单的菜单
http://www.w3school.com.cn/example/xmle/simple.xml
|
评分
-
2
查看全部评分
-
|