XML篇
以下内容总结自w3school。
什么是xml?
- XML 指可扩展标记语言Extensible Markup Language,被设计用来传输和存储数据。
- XML 是独立于软件和硬件的信息传输工具。
与html的区别?
- XML 被设计为传输和存储数据,其焦点是数据的内容 。
- HTML 被设计用来显示数据,其焦点是数据的外观。
- HTML 旨在显示信息,而 XML 旨在传输信息。
- XML是没有预定于标签的,需要用户自己来定义。而不像HTML那样,存在预定义的标签,如
<p> 、<h1> 、<table> 等。
一个简单xml实例 <?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book>
....
</book>
</bookstore>
- 第一行定义了 XML 的版本 (1.0) 和所使用的编码UTF-8
- 第二行是根结点开始
- 中间部分是子元素,其中
<book></book> 是一个子节点,中间有4个子节点,<title></title> 结点包含属性lang
- 最后一行是根结点结束
xml一些重要的语法规则
- 所有 XML 元素都须有关闭标签,也就是成对出现。
- XML 标签对大小写敏感。
- XML 文档必须有根元素。
- XML 的属性值须加引号,单引号或双引号。
- 在XML当中的一个特殊字符的使用
替换字符 |
原字符 |
说明 |
< |
< |
小于 |
> |
> |
大于 |
& |
& |
和 |
' |
‘ |
单引号 |
" |
“ |
双引号 |
xml的命名规则
xml属性和元素的使用
示例
<note date="08/08/2008">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
<note id="1">
<date>
<day>08</day>
<month>08</month>
<year>2008</year>
</date>
<to>George</to>
...
</note>
分析
- 示例1中,date属于数据本身,不宜作为属性来表示。date=”08/08/2008”,不便于应用程序的访问和处理。需要分隔该字符串,来获得年月日的信息。
- 示例2中,date属于元素,其中又包含了年月日三个子元素。将时间数据分开表示,应用程序可以任意获取年月日中的数值。而且如果我要精确到时间,只要在添加一个
<time></time> 。因此,扩展性非常好,不影响程序的访问。而对于属性id来说,是作为此元素的标识,相当于元数据,不是数据本身,可以考虑使用。
最佳实践: 元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。
xml验证
- 拥有正确语法的 XML 被称为“形式良好”的 XML。
验证方式
- XML DTD
- XML Schema:W3C 支持一种基于 XML 的 DTD 代替者。
XML DTD
- 定义:DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块,它使用一系列的合法元素来定义文档结构。
使用方式:
可以在xml中直接定义 <!DOCTYPE 根元素 [元素声明]>
<?xml version="1.0"?>
<!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
通过外部引入(常用) <!DOCTYPE 根元素 SYSTEM "文件名">
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
为什么使用DTD?
- 独立的团体可一致地使用某个标准的 DTD 来交换数据。就是可以保证大家使用的该xml标签结构是一致的。
- DTD 来验证从外部接收到的数据。 采用DTD的话,来保证当前锁处理的xm确实是大家所统一使用的,如果出现其他异常标签在里面,验证不通过。
实际应用
XML Schema
JSON篇
参考:http://json.org/json-zh.html
JSON的主流解析框架
- fastjson: https://github.com/alibaba/fastjson (被认为序列化和反序列化的性能都比其他框架好)
- 待完善….
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|