XML解析
1. 应该掌握的知识:
- html
- javascript
2. 简介:
2.1 什么是xml:
XML 指可扩展标记语言(eXtensible Markup Language)。
XML 被设计用来传输和存储数据。
XML 的设计宗旨是传输数据,而不是显示数据。
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准。
2.2 xml和html的差异:
- HTML 旨在显示信息,而 XML 旨在传输信息。
2.3 XML 不会做任何事情
XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息。
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
具有自我描述性(自定义标签)。它包含了发送者和接受者的信息,同时拥有标题以及消息主体。
但是,这个 XML 文档仍然没有做任何事情。它仅仅是包装在 XML 标签中的纯粹的信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。
3. XML的用途
3.1 xml把数据从html中分离
数据存储在xml文件中,通过js代码读取该xml的文件,更新网页数据
3.2 xml简化数据共享
xml的数据以文本的格式存储,独立于软件和硬件,可以有效的避免计算机系统和数据不兼容问题
3.3 xml简化数据传输
由于互联网上不同的系统,数据不兼容,交换数据同样不兼容问题,xml读取数据以纯文本的形式,避免了不兼容的问题
。。。。之后看菜鸟教程
XML的树结构
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
要点:
1. xml代码的第一行必须是对xml的声明
2. 之后的第一个标签就是树的根,称为根元素
<note>
3. 接下来就是子元素
<to></to>
<from></from>
<heading></heading>
<body></body>
4. 菜鸟教程
XML语法
1. 首先进行声明
<?xml version="1.0" encoding="utf-8"?>
2. xml文档必须有根元素
3. 所有的xml元素必须严格关闭
4. xml标签对大小写敏感
5. xml的属性值必须加引号
6. xml的实体引用(类似于html的实体编码)
- 这些字符都应该被前面的编码代替
7. 注释方法
<!-- -->
8. Xml会保留空格
- html会对空格进行缩减
9. XML以LF存储换行
- XML 以 LF 存储换行。
XML的元素(注意不是属性)
根标签下的字标签,包含文本属性
1. 命名规则:
以字母开头,不包含空格
最佳命名习惯: 菜鸟教程
2. xml的元素是可以扩展的
XML 的优势之一,就是可以在不中断应用程序的情况下进行扩展。
随时添加标签。。
xml的属性
xml的属性提供有关元素的额外的信息
1. xml属性必须加引号
2. xml中尽量少使用一些属性,有些属性可以被元素代替,那么推荐使用元素
3. 有关属性的一些问题:
- 属性不能包含多个值(元素可以)
- 属性不能包含树结构(元素可以)
- 属性不容易扩展(为未来的变化)
4. 针对元数据的xml属性
相同的元素可以用id属性值来标识,id只是标识作用
<messages>
<note id="501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>
XML验证(DTD)
1. DTD的作用是定义xml文档结构
- 在xml文件中应该声明对外部dtd文件的引用
<?xml version="1.0" encoding="ISO-8859-1"?> 声明xml文档
<!DOCTYPE note SYSTEM "Note.dtd"> //SYSTEM 表明后面可以包含本地文件,而这时包含的就是Notee.dtd文档,这也就是外部实体引入
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
2. DTD大体结构
<!DOCTYPE note//表明note是根元素
[
<!ELEMENT note (to,from,heading,body)> //代表note根元素包含四个元素
<!ELEMENT to (#PCDATA)> //to元素 包含任意数据,#PCDTATA就相当于string的数据类型
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
3. DTD基本语法:
<!ELEMENT NAME CONTENT>
- ELEMENT是关键字
- NAME表示元素的名称
- CONTENT是元素的类型,必须大写,CONTENT的三种写法:
(1) EMPTY-------表示该元素不能包含子元素和文本,但可以有属性
(2) ANY---------表示该元素可以包含任何在DTD中定义的元素内容
(3) #PCDATA-----可以包含任何字符数据,但是不能包含任何子元素
4. DTD元素的组合类型
DTD这样规定:
<!ELEMENT 家庭(人+,家电*)>
这个DTD规定家庭元素可以有1到多个“人”这个子元素,也可以有0到多个“家电”这个子元素,其中的+和*的含义与正则表达式的含义一致
XML这样写:
<家庭>
<人 名字=""性别=""/>
<人 名字=""性别=""年龄=""/>
<家电 名称=""/>
</家庭>
DTD引用实体和外部实体
- 语法:
<!ENTITY entity-name entitty-value> # 引用内部实体
<!ENTITY entity-name SYSTEM "URI/URL"> # 引用外部实体
DTD总结:
(1). 当引用的DTD文件是本地文件时,用SYSTEM标识,并写上DTD文件路径,如下:
<!DOCTYPE 根元素 SYSTEM "DTD文件路径">
(2). 如果引用的DTD文件,是一个公共文件时,采用PUBLIC标识,如下方式:
<!DOCTYPE 根元素 PUBLIC "DTD名称""DTD文件的url">
XML javascript
1. XMLHttpRequest对象
xmlhttprequest对象用于在后台与服务器之间交换数据
作用:
- 在不重新加载页面的情况下更新网页
- 在页面已加载后从服务器请求数据
- 在页面已加载后从服务器接收数据
- 在后台向服务器发送数据
语法:
xmlhttp=new XMLHttpRequest();
XML Parser(解析器)
XML 解析器把 XML 文档转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象。
Xml DoM
DOM(Document Object Model 文档对象模型)定义了访问和操作文档(xml)的标准方法。