Xml标准解析 - littleboy12580/learning_python GitHub Wiki
XML即可扩展标记语言(eXtensible Markup Language)。它的主要作用是简化数据的存储以及数据的传输分享
下面是一个XML文档的实例
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
第一行是 XML 声明,它定义 XML 的版本和所使用的编码;第二行描述xml文档的根元素,后面4个则是根的4个子元素;最后则是定义根元素的结尾。
XML文档中的元素形成了一棵文档树;这棵树从根部开始,并扩展到树的最底端;因此xml文档必须含有根元素;所有元素均可拥有文本内容和属性
- 所有 XML 元素都须有关闭标签(声明不是xml元素,不需要关闭标签)
- XML 标签对大小写敏感
在XML中,标签与标签是不同的;必须使用相同的大小写来编写打开标签和关闭标签 - XML 必须正确地嵌套
- XML 文档必须有根元素
- XML 的属性值须加引号
- 实体引用
在 XML 中,一些字符拥有特殊的意义;如果你把字符 “<” 放在 XML 元素中,会发生错误;这是因为解析器会把它当作新元素的开始,这样会产生 XML 错误;为了避免这个错误,请用实体引用来代替 "<" 字符。
在 XML 中,有 5 个预定义的实体引用:
< | < | 小于 |
> | > | 大于 |
& | & | 和号 |
' | ' | 单引号 |
" | " | 引号 |
- XML 中的注释
在 XML 中编写注释的语法与 HTML 的语法很相似:
<!-- This is a comment -->
- 在 XML 中,空格会被保留
- 以 LF 存储换行
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字符 “xml”(或者 XML、Xml)开始
- 名称不能包含空格
XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分;元素可包含其他元素、文本或者两者的混合物,元素也可以拥有属性
XML 属性提供元素的额外信息,属性的值必须加上引号
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
在上面的例子中,第一个sex是属性,第二个sex是元素;
在xml中尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息,理由如下:
- 属性无法包含多重的值(元素可以)
- 属性无法描述树结构(元素可以)
- 属性不易扩展(为未来的变化)
- 属性难以阅读和维护
有时候会向元素分配 ID 引用。这些 ID 索引可用于标识 XML 元素,它起作用的方式与 HTML 中 ID 属性是一样的,如下例所示:
<messages>
<note id="501">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
<note id="502">
<to>John</to>
<from>George</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>
在xml中,元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素