前言
自用XML数据解析,学习来源网络
XML 元素是可扩展,以携带更多的信息。
文档被应用程序使用后又向文档新增信息不会中断应用程序,这个应用程序仍然可以找到 XML 文档中的原来的元素并产生同样的输出。
一、xml声明
<?xml 版本信息(编码信息)(文档独立性信息)?>表示该文档是一个XML文档,以及遵循哪个XML版本的规范。
xml声明一般是xml文档的第一行,在XML声明之前不许有任何内容,包括空格。(XML 声明没有关闭标签。声明不属于XML本身的组成部分,不是 XML 元素,也不需要关闭标签。)
<?xml version=“1.0” encoding=”UTF-8” standalone=”no”?>
<note>
······
</note>
声明结构
version属性:表示当前xml文档的版本,如果写声明,就必须包含version属性,截止目前XML只有一个版本,即1.0。
encoding属性(可选):注明XML文档使用的字符编码方式。采用Unicode编码时可以在XML文档声明中省略字符集编码,当XML文档使用非Unicode编码时,必须在XML文档声明中指定其字符集编码,xml解析器会使用这个编码来解析xml文档。
standalone属性(可选):说明文档是否是独立的,yes(缺省)——该文档没有依赖外面的任何文件而可以独立存在,no——该文档依赖于外面的某个文件
如果同时设置了encoding和standalone属性,standalone属性要位于encoding属性之后。
二、根元素
XML 文档必须有一个元素是所有其他元素的父元素,是xml文档里面唯一的;它的开始是放在最前面,结束是放在最后面。(上述例子中的note元素)
三、元素
XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。
- 所有的xml元素都必须有结束标签,省略关闭标签是非法的;
<p>This is a paragraph</p>
- xml标签对大小写敏感;
<Message>这是错误的,大小写不一致。</message>
- xml必须正确地嵌套;
<b><i>This text is bold and italic</i></b>
<i> 元素是在 <b> 元素内打开的,那么它必须在 <b> 元素内关闭。
元素的命名规则
- 名称中可以含字母、数字及其他的字符;
- 名称不能以数字或者标点符号开始;
- 名称中不能包含空格。
- 名称不能以字符 “xml”(或者 XML、Xml)开始
命名习惯
- 使名称具有描述性。使用下划线的名称也很不错。
- 名称应当比较简短,比如:<book_title>,而不是:<the_title_of_the_book>。
- 大小写尽量采用同一标准
完全用小写字母来书写名称,当名称中包含多个单词时,相互之间用下划线隔开
将每个单词的首字母大写,不使用分隔符 - 避免 “-” 字符。如果您按照这样的方式进行命名:“first-name”,一些软件会认为你需要提取第一个单词。
避免 “.” 字符。如果您按照这样的方式进行命名:“first.name”,一些软件会认为 “name” 是对象 “first” 的属性。
避免 “:” 字符。冒号会被转换为命名空间来使用。
XML 文档经常有一个对应的数据库,其中的字段会对应 XML 文档中的元素。有一个实用的经验,即使用数据库的名称规则来命名 XML 文档中的元素。
非英语的字母比如 éòá 也是合法的 XML 元素名,不过需要留意当软件开发商不支持这些字符时可能出现的问题。
空元素
不包含任何内容的元素。
四、属性
<元素名 属性名=“属性值”/>
一个元素可以有多个属性,它的基本格式为:
<元素名 属性名=“属性值” 属性名=“属性值”>;
属性通常提供不属于数据组成部分的信息(尽量用元素描述数据)。属性可能与数据无关,但是对需要处理这个元素的软件来说却很重要
" date" 属性提供有关 元素的额外信息
<note date="08/08/2008">
<to>George</to>
<from>John</from>
</note>
注意:
属性值必须用引号包围(单双都可);
属性值中不能够直接包含<.”,&。
如果属性值本身包含双引号,那么有必要使用单引号包围它
<gangster name='George "Shotgun" Ziegler'>
或者可以使用实体引用:
<gangster name="George "Shotgun" Ziegler">
属性无法包含多重的值(元素可以)
属性无法描述树结构(元素可以)
属性不易扩展(为未来的变化)
属性难以阅读和维护
五、实体
在xml中,一些字符拥有特殊的意义。如果把字符“<”放在xml元素中,会发生错误,这是因为解析器会把它当作新元素的开始,这样会产生xml错误:
<message>if salary < 1000 then</message>
为了避免这个错误,请用实体引用来代替“<”字符:
<message>if salary < 1000 then</message>
预定义实体引用
< < 小于
> > 大于
& & 和号
' ' 单引号
" " 引号
在 XML 中,只有字符 “<” 和 “&” 确实是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯。
六、注释
<!-- This is a comment -->
注释中不能包含–
七、特点
在 XML 中,空格会被保留,文档中的空格不会被删节。(输出时不会自动缩减空格)
XML 文档必须有根元素
XML 文档必须有关闭标签
XML 标签对大小写敏感
XML 元素必须被正确的嵌套
XML 属性必须加引号