万能的数据传输格式XML
目录
未找到目录项。
一、XML概述
1、发展史
GML 通用标记语言
1969年,IBM公司的一些砖家为了解决不同系统中文档格式的问题而开发的一种文档描述语言。
SGML 标准通用标记语言
1986年,ANSI组织对GML进行整理并升级为SGML。但是SGML是一种非常严谨的文档描述语言,其结构非常复杂(标准手册就有500多页),难以理解和学习,进而影响其推广与应用。
1993年 HTML 超文本标记语言(W3C)
HTML继承了SGML的许多重要的特点,比如结构化、实现独立和可描述性,但是同时它也存在很多缺陷:比如它只能使用固定的有限的标记,而且它只侧重于对内容的显示。
1998年 XML
随着Web上数据的增多,这些HTML存在的缺点就变的不可被忽略。为了解决这些问题, W3C组织又基于SGML语言开发一款新的标记语言,并称之为XML。是xml1.0.到目前为止,xml的版本还是1.0
html4.01 -> xhtml1.0 -> xhtml1.1(终止)
html5
2、什么是XML
XML(eXtensible Markup Language):可扩展标记语言
用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
xml也是一种标记(标签)语言。也是使用<table></table>这种标签
xml的标签可扩展。也就是说xml的标签可以自定义。
xml侧重于描述数据,html侧重于展示数据。
3、XML的应用场景举例
飞秋的配置文件:
二、XML快速入门
1、使用XML语言描述一个人的信息
人有什么特点?
姓名、年龄、性别
<person>
<name>Tom</name>
<age>22</age>
<sex>男</sex>
</person>
2、使用XML语言描述一本书的信息
<book>
<name>斗破苍穹</name>
<author>天蚕土豆</author>
<type>修仙</type>
</book>
三、XML基本语法
1、文档声明
<?xml version=”1.0″ encoding=”UTF-8″?>
2、元素说明
元素就是标签、就是标记。就是类似于<table></table>这种标签。
元素在HTML中叫做元素、标记、标签都可以。
元素在DOM中叫做节点。
① 一个XML文档必须有且仅有一个根标签,其他标签都是这个根标签的子标签
② 一个标签必须闭合
③ 标签不允许有交叉嵌套
正确的写法:<b><i>hello</i></b> 错误的写法:<b><i>hello</b></i>
3、元素命名规则
① 元素(标签)的名称可以包含字母、数字、中横线、下划线和英文句点;
② 只能以字母或下划线开头;
③ 严格区分大小写;
④ 名称字符之间不能有空格或制表符;
⑤ 名称字符之间不能使用冒号,冒号有特殊含义。
4、属性
① 属性名称的命名规范与元素的命名规范相同
② 属性值一定要用引号(单引号或双引号)引起来
③ 一个元素可以有多个属性
④ 元素中的属性是不允许重复的
⑤ 标签属性所代表的信息也可以被改成用子元素的形式来描述
5、注释
和html注释一样:<!–注释的内容–>
在xml中,注释的内容也会显示在页面上。
6、特殊符号
在xml文档描述信息中,不要使用特殊符号,如果使用特殊符号的话,可以使用实体符号代替,如小于号<可以用实体符号<表示
如果说一个内容区有大段的文字,文字中有很多特殊符号,一个一个的替换肯定是比较麻烦,解决的办法是使用CDATA。
7、CDATA节
CDATA节里面的内容可以原样输出,解决了大段内容中有很多特殊符号的问题。
语法:
<![CDATA[这里面写内容]]>
8、其他指令
基本语法:
必须以“<?”作为开头,以“?>”作为结尾。
在实际应用中,其处理指令主要有:
xml-stylesheet指令
<?xml-stylesheet type=’text/css’ href=’demo.css’ ?>
这样的话,xml在页面中就不会显示为树状结构了。
四、总结XML与HTML的区别
1、xml语法比较严格,html不是很严格
2、html侧重于展示数据,是有样式的。xml侧重于描述数据,没有样式。
五、XML的用途
① 程序间交互的中间件
传输数据时的中间介质,媒介。
在程序中,比如说,php从MySQL数据库获取了数据,要把数据传递给JavaScript处理。必须找一个中间的介质转化,xml就可以充当这个介质。也就是说php能够认识xml,JavaScript也认识xml。
② 配置文件
比如飞秋的配置文件。
③ 存储数据 – 充当小型数据库
比如用xml表示article数据表:
article表中的字段有:id,title,content,author,time
用xml表示:
<articles>
<article>
<id>1</id>
<title>母猪为和常常半夜惨叫</title>
</article>
<article>
<id>2</id>
<title>昨天晚上我看到某某同学去了猪圈</title>
</article>
</articles>
④ 其他用途
应用在化学领域,比如用xml表示一个化学分子Fe3O4
六、使用PHP解析XML数据
1、解析xml
什么是解析:解析就是对xml进行增删改查保存的工作。
为什么要解析xml:就是要获取(增删改查)xml中的数据,以便使用xml。
怎样解析xml:方法非常多,涉及到的语言也非常多。
各个语言都能够解析xml,每种语言又有很多办法。比如PHP就有好几种办法,如下图。
2、SimpleXML解析XML工作原理
① 开辟内存空间
② 载入XML文件到内存形成DOM树结构
③ 生成SimpleXMLElement对象
3、对元素节点进行增删改查
1、创建一个用于测试的xml文档
2、读取节点中的内容
把所有同学的姓名、性别、年龄显示在表格中:
3、添加节点
4、修改节点
重新赋值的方式来修改节点的值。
5、删除节点
先找到要删除的节点,unset即可。
4、对属性节点进行增删改查
1、获取元素的属性
使用的是SimpleXMLElement对象中的attributes方法,这个方法可以获取到一个标签的所有属性,返回值是一个对象。
2、添加属性
3、修改属性
修改潘光明的身高为为157
4、删除属性
使用unset。
5、页面获取02test.xml中所有的信息,以表格的形式展示出来
五、案例-获取天气信息(接口调用)
1、接口的调用说明
接口地址:
http://php.weather.sina.com.cn/xml.php?city=%B1%B1%BE%A9&password=DJOYnieT8234jlsK&day=0
接口类型:HTTP GET请求
参数说明:
city :要查询城市的名称,文本要进行格式转换,转换为utf-8格式且数据需要使用urlencode进行转码
password :密钥,固定
day :0代表要查询当天的天气情况
2、接口调用的具体实现
1、获取接口信息,并组合本网站的天气字符串
2、改进,10分钟更新一次
六、Xpath语言
1、什么Xpath
简言之,XPath 是一种用来在内存中导航整个 XML 树的语言。XPath 的设计初衷是作为一种面向 XSLT 和 XPointer 的语言。XPath 1.0 在 1999 年成为了一种 W3C 标准。较新的 XPath 2.0 已于 2007 获得规范的状态。
随着 XML 其他规范的出现,XPath 的使用也相应出现。如今,XPath 已成为在 XML 模式、ISO Schematron、XQuery 和 XForms 中导航 XML 的首选语言。具有讽刺意味的是,有可依据的理由证明 XPath 并不是基于的 XML 语法。它使用了其自身的语法来避免与 URI 和其他与 XML 相关的语法的冲突。
XPath是一门在 XML 文档中查找信息的语言。
XPath可用来在 XML 文档中对元素和属性进行遍历。
而且Xpath并不仅仅应用于XML数据查询,其在很多语言中(PHP、Java、.NET以及Javascript),都可以广泛使用。
2、Xpath语言详解
1、基础查找
①、使用绝对路径进行检索(/students)
使用斜线/打头的都属于绝对路径,从根元素开始找。
②、使用相对路径(//stu/name)
③、使用*递归查找,*表示全部
2、筛选查找
1、指定下标查询
2、指定下标查询,查询最后一个学生
3、指定下标,查找倒数第二个学生
4、查找stu节点,含有子节点name的stu节点
5、查询stu节点,子节点age的值大于20的stu
6、查询other标签,含有height属性的other
7、查询other节点,含有height属性,并且height的值大于170
8、模糊查询
9、多条件查询,查询名字中含有“飞”并年龄含有“2”的学生
七、综合案例-SimpleXML+Xpath电子词典
1、设计数据表(设置xml文档格式)
<dict>
<word>
<en>dog</en>
<cn>狗</cn>
</word>
<word>
<en>cat</en>
<cn>猫</cn>
</word>
</dict>
2、设计词典的界面
具体代码:
3、完成查询功能
使用get方法向当前页面提交数据进行查询,所以表单的action和method都省略不写。
判断用户是否是查询:
根据英文查询汉语翻译:
将结果写到span中:
使用type,完成更加动态的查询:
将查询的词写到input输入框中:
设置option默认勾选值:
4、添加新词条
1、设计界面
2、表单还是提交到当前页面,使用post方式提交
3、具体添加操作
八、使用DOM方式操作xml