在前些天API的简介当中有说返回的数据格式是JSON或者XML,然而我全程用JSON,这里做一点补充(刚说完打脸,Wordpress的导出文件也是.xml)。
XML(Extensible Markup Language)可扩展标记语言,其优势在于如果你需要在 HTML 文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑 HTML。通过 XML,数据能够存储在独立的 XML 文件中。这样你就可以专注于使用 HTML 进行布局和显示,并确保修改底层数据不再需要对 HTML 进行任何的改变。通过使用几行 JavaScript,你就可以读取一个外部 XML 文件,然后更新 HTML 中的数据内容。
- XML 指可扩展标记语言(EXtensible Markup Language)。
- XML 是一种很像HTML的标记语言。
- XML 的设计宗旨是传输数据,而不是显示数据。
- XML 标签没有被预定义。您需要自行定义标签。
- XML 被设计为具有自我描述性。
- XML 是 W3C 的推荐标准。
XML 不是 HTML 的替代。
XML 和 HTML 为不同的目的而设计:
- XML 被设计用来传输和存储数据,其焦点是数据的内容。
- HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息,而 XML 旨在传输信息。
语法规则
XML的基本组成:
1、标记(元素):<标记名></标记名>,开始和结束必须成对出现 而标记/元素之间必须正确嵌套,可以随意命名和扩展
2、元素内容:开始标记到结束标记中间的内容,包括空格符,回车换行都是
3、属性Attribute: key="value"/key ='value' 属性则必须出现在开始标记当中
<student sno="123"></student>:Student有一个属性sno ,其值为123.
首行:<?xml version ="1.0" encoding="UTF-8"?>
有且只有一个根元素/根标记
XML命名规则:
名称可以包含字母、数字以及其他字符 但不能以数字或者标点符号开始,大小写敏感,名称不以XML开始 不包含空格。若标记内容为空:写<br></br> 或者<br/>
如果当前xml文件有语法规则验证:<!ELEMENT student (name,age)>表明student标记的元素只能 是name和age,并且出现的顺序是name在前,age在后。
实体:在 XML 中,一些字符拥有特殊的意义。如果你把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。这样会产生 XML 错误。
XML 中的注释:<!-- This is a comment -->
XML当中PCDATA会被解析器处理解析,而CDATA会被原样输出不会被解析:<![CDATA[The String of not xml]]>
处理指令:简称PI 处理指令用来指挥解析引擎 <?xml ....?>(话说 就像上面的首行,那就是一个处理指令)
遵循XML语法规则的文件被称之为良构的XML文件。而其结构由上可知也是树形结构。
- XML 文档必须有根元素
- XML 文档必须有关闭标签
- XML 标签对大小写敏感
- XML 元素必须被正确的嵌套
- XML 属性必须加引号
XML验证和CSS
合法的XML文档是形式良好的XML文档,同样遵守文档类型定义 DTD(http://www.w3school.com.cn/dtd/index.asp)的语法规则,而W3C支持一种基于XML的DTD代替者XML Schema(http://www.w3school.com.cn/schema/index.asp)。
XML 文档中的错误会终止你的 XML 程序。W3C 的 XML 规范声明:如果 XML 文档存在错误,那么程序就不应当继续处理这个文档。理由是,XML 软件应当轻巧,快速,具有良好的兼容性。如果使用 HTML,创建包含大量错误的文档是有可能的(比如你忘记了结束标签)。其中一个主要的原因是 HTML 浏览器相当臃肿,兼容性也很差,并且它们有自己的方式来确定当发现错误时文档应该显示为什么样子。
而现如今几乎 所有主流浏览器都支持XML,而要在浏览器当中查看初始的源代码F12即可。也可以使用CSS来格式化XML:
利用处理指令:<?xml-stylesheet type="text/css" href="style.css"?>即可修改
使用命名空间(Namespaces)
这个 XML 文档携带着某个表格中的信息:
<h:table xmlns:h="http://www.briup.com/h">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
此 XML 文档携带着有关一件家具的信息:
<f:table xmlns:f="http://www.briup.com/f">
<f:name>茶几</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
与仅仅使用前缀不同,我们为 <table> 标签添加了一个 xmlns 属性,这样就为前缀赋予了一个与某个命名空间相关联的限定名称。
XML Namespace (xmlns) 属性
XML 命名空间属性被放置于元素的开始标签之中,并使用以下的语法:
xmlns:namespace-prefix="namespaceURI"
当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。
用于标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称
更多关于XML的内容请参考W3CSchool。