XML编程.docx
- 文档编号:29894595
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:71
- 大小:2.71MB
XML编程.docx
《XML编程.docx》由会员分享,可在线阅读,更多相关《XML编程.docx(71页珍藏版)》请在冰豆网上搜索。
XML编程
万能的数据传输格式——XML
目录
万能的数据传输格式——XML1
一、历史起源2
1、发展史2
2、什么是XML2
3、XML与HTML区别3
4、XML应用场景3
5、XML在实际开发中的应用4
二、编写合法的XML4
1、ZendStudio软件使用4
1)软件破解4
2)软件界面5
3)创建工程5
4、软件配置6
2、快速入门9
1)描述人的信息(demo01.xml)9
2)描述书的信息(demo02.xml)11
3、编写合法的XML文档11
1)文档声明11
2.1)元素(标记、节点)11
2.2)元素命名规则:
12
3)元素属性12
4)文档注释12
5)特殊字符13
6)CDATA区段13
7、处理指令PI14
三、XML在GPS导航中的实际应用16
四、DTD约束文档17
1、为什么要使用DTD约束17
2、什么是DTD约束文档17
3、DTD文档分类17
1)内部DTD18
2)外部DTD18
3)公用DTD19
4、DTD校检器19
5、DTD约束语法20
1)定义元素20
2)定义属性27
3)定义实体31
五、DTD综合案例——产品DTD33
一、历史起源
1、发展史
gml(1969):
通用标记语言
IBM砖家-软件要具有高度的可移植性,必须要具有统一的标准
sgml(1985):
标准通用标记语言
html(1993):
w3c
实现不同平台,不同浏览器之间对同一网页的显示
缺点:
兼容性问题
xml(1998):
w3c
可扩展标记语言
面试题:
什么是XML,主要功能是什么?
答:
可扩展标记语言,主要功能是实现对数据的传输与存储。
2、什么是XML
●XML
●全称:
ExtensibleMarkupLanguage
●中文名:
可扩展标记语言
●用于标记电子文件使其具有结构性的标记语言,可以用来标记数据,定义数据类型,允许用户对自己的标记语言进行定义的源语言(自定义)。
HTML结构:
XML结构:
<网页>
<头部>头部>
<身体>身体>
网页>
3、XML与HTML区别
1)html标签不能自定义,从标签上不能达到“见词知意”的目的
2)html将数据与格式绑定在一起
数据
3)不同浏览器解html不同
4)html语法要求不严格
- Nokia手机
- 小米手机
xml语法要求严谨
4、XML应用场景
1)充当程序间数据交互的中间件
PHPXMLVC
2)配置文件config.php
PHPJAVAC#
config.phpconfig.javaconfig.aspx
config.xml
3)充当小型数据库
xml将来可能会代替数据库
php+oracle
php+xml:
金山快译、MSN
4)规范数据格式(DTD)
咨询部
编号姓名学生问题
1张老师大锤XML是什么?
教学部
5、XML在实际开发中的应用
二、编写合法的XML
1、ZendStudio软件使用
1)软件破解
将压缩包中的jar文件复制到软件安装目录下的plugins文件夹中并覆盖同名文件即可破解。
2)软件界面
3)创建工程
创建工程的两种方式
①创建一个空白工程
②已存在项目导入
4、软件配置
1)字体设置
2)编码设置
3)工作区设置
我们设置的默认工作区不要和我们apache默认htdocs目录放在一起,否则系统在我们创建项目或导入项目时,系统会自动认为项目已存在,如已经设置了默认工作区,请按如下方式更改
2、快速入门
1)描述人的信息(demo01.xml)
2)xml文件两种运行方式
①直接打开浏览器,输入网址即可
②可以通过鼠标右键——打开方式——浏览器方式打开xml文件即可
2)描述书的信息(demo02.xml)
3、编写合法的XML文档
●文档声明
●元素
●元素属性
●注释
●特殊字符
●CDATA区段
●处理指令
1)文档声明
基本语法:
xmlversion="1.0"encoding="UTF-8"?
>
version:
xml版本号,目前最新版为1.0版
encoding:
编码格式
standalone是否独立默认yes
如果xml文件与dtd约束文件一起运行则不独立,反之,则独立
2.1)元素(标记、节点)
一个标签分为起始和结束标签(不能省略)
一个标签中可以嵌套若干子标签,但所有标签必须合理的嵌套,不允许有交叉嵌套
一个XML文档必须有且仅有一个根标签,其他标签都是这个根标签的子标签
2.2)元素命名规则:
①元素(标签)的名称可以包含字母、数字、减号、下划线和英文句点
正确:
错误:
<123>123>
②严格区分大小写;
正确:
错误:
③只能以字母或下划线开头;
正确:
错误:
<123abc>123abc>
④名称字符之间不能有空格或制表符;
正确:
错误:
⑤名称字符之间不能使用冒号
本身是没有问题的,但是官方不推荐
3)元素属性
①一个元素可以有多个属性
②属性值一定要用引号(单引号或双引号)引起来
③属性名称的命名规范与元素的命名规范相同
④元素中的属性是不允许重复的
⑤标签属性所代表的信息也可以被改成用子元素的形式来描述
4)文档注释
基本语法:
--注释内容-->
注:
XML声明之前不能有注释,注释不能嵌套
示例代码(demo03.xml)
5)特殊字符
在xml编写时,经常会遇到以下特殊字符
示例代码(demo04.xml)
6)CDATA区段
CDATA:
CharacterData
作用:
把标签当做普通文本内容
基本语法:
[CDATA[内容]]>
问题:
什么时候使用特殊字符转义,什么使用CDATA区段呢?
答:
对于内容比较少的情况,我们可以直接通过特殊字符转义即可
对于如文章描述、文章内容等内容比较多的情况,可以采用CDATA区段
7、处理指令PI
作用:
用来指挥软件如何解析XML文档。
语法:
必须以“
”作为开头,以“?
>”作为结尾。
常用处理指令:
xml指令
xml?
>
xml-stylesheet指令
例:
xml-stylesheettype="text/css“href=“style.css"?
>
type:
文档类型
href:
外部css样式路径
demo04.xml
style.css
运行效果:
三、XML在GPS导航中的实际应用
1、了解RSS编写规范
参考RSS2.0语言规范.doc
2、创建xml文档,并输入文档声明
3、定制rss结构(详细请参考rss.xml)
运行效果:
四、DTD约束文档
1、为什么要使用DTD约束
2、什么是DTD约束文档
XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束
约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等。
什么是DTD
DocumentTypeDefinition
文档类型定义
约束XML的书写规范
格式良好的XML:
遵循XML语法的XML(合法的XML文档)
有效的XML:
遵循DTD约束文档的XML(合理的XML文档)
合理的XML一定是合法的XML,但是合法的XMl不一定是合理的XML
3、DTD文档分类
内部DTD
外部DTD
公用DTD
1)内部DTD
在XML文档中编写的DTD文档我们就称之为内部DTD
内部DTD基本语法:
DOCTYPE根元素[
DTD约束…
]>
示例代码:
(demo05.xml)
2)外部DTD
在XML文档外部定义的DTD文档,我们称之为外部DTD(*.dtd文档)
外部DTD文档引用语法:
DOCTYPE根元素SYSTEM“外部DTD的Uri路径”>
demo05.xml代码:
demo05.dtd代码:
运行效果:
3)公用DTD
基本语法:
DOCTYPE根元素PUBLIC“DTD标识名”“公用DTD的URI”>
公用DTD文件不需要我们编写,因为其都是由第三方权威机构编写,我们只需要遵循该约束即可。
4、DTD校检器
默认情况下,所有浏览器都没有校检DTD文档功能,其只能判断XML文档是否合法,如果想进行DTD约束文档的校检,必须借助微软提供的DTD校检器,代码如下:
示例代码:
注:
以上代码只能在IE浏览器中运行,其他浏览器是无法使用ActiveXObject这个类的,另外该文件必须通过鼠标右键——打开方式——IE浏览器打开运行。
运行效果如下:
5、DTD约束语法
定义元素
定义属性
定义实体
1)定义元素
基本语法:
ELEMENT元素名称元素类型>
注:
在编写定义元素时,一定要从根元素开始一级一级向下定义
【元素类型定义】:
(#PCDATA):
该类型可包含任何字符数据,但是不能包含任何子元素
EMPTY:
该类型不能包含子元素和文本,但可以有属性
ANY:
该类型可以包含任何在DTD定义的元素内容(通常用于根元素)
【子元素定义】:
(子元素):
定义子元素只能出现一次
(子元素1,子元素2,……):
定义子元素出现的顺序以及出现的次数为1次
(子元素*):
定义子元素出现的次数为0或多次
(子元素+):
定义子元素出现的次数为1到多次
(子元素?
):
定义子元素出现的次数为0或1次
(子元素1|子元素2):
定义互斥元素
思考题:
①
ELEMENTnote(header,(message|body))>
或
②
ELEMENTnote(header|message)*>
或
…
或
…
或
…
…
2)定义属性
基本语法:
ATTLIST元素名称属性名称属性类型默认值>
①属性类型
CDATA字符或数字(文本类型)
(en1|en2|……)枚举类型
ID属性唯一
IDREF引用
②默认值
#REQUIRED必填
#IMPLIED可选
#FIXED固定值
值默认值
例1:
设置属性类型为CDATA,默认值为#REQUIRED
例2:
设置属性类型为枚举类型,默认值为#IMPLIED
例3:
属性类型为ID类型
例4:
属性类型为IDREF引用类型
例5:
默认值为#FIXED
运行效果:
例6:
属性的默认值为值类型
问题:
固定值与默认值之间有什么区别?
答:
固定值其值是固定的,当我们没有声明该属性时,系统会自动追加此属性到元素中。
默认值实际是提供了一种可选的默认值的情况,你既可以使用此值,也可以单独定义。
3)定义实体
在XML中实体分为两种,
①引用实体
定义基本语法:
ENTITY实体名称“实体的值”>
调用基本语法:
&实体名称;
注:
引用实体是在DTD文档中定义,在XML文档中使用
②参数实体
定义的基本语法:
ENTITY%实体名称“实体的值”>
调用的基本语法:
%实体名称;
注:
参数实体是在DTD文档中定义,在DTD文档中进行使用的。
五、DTD综合案例——产品DTD
通过阅读以上代码可知,以上文档为内部DTD文档,所以其是在XML文件中声明和使用的。
阅读第2行可知,当前XML文档的根元素为CATELOG
阅读345行可知,其定义了三个引用实体,如下图所示
阅读第7行代码可知,根元素下具有多个PRODUCT子元素(次数为1到多)
阅读910行代码可知
PRODUCT拥有四个子元素
阅读12-17行代码可知,PRODUCT拥有多个属性
阅读19-22行代码可知,规格属于文本类型拥有两个属性
阅读30-35行代码可知,PRICE属于文本节点,拥有四个属性
编写代码如下图所示:
万能的数据传输格式——XML
目录
万能的数据传输格式——XML1
一、PHP与XML3
1、为什么需要PHP解析XML3
2、PHP解析XML两种常用方式3
3、XML执行流程3
4、XML树结构——DOM模型3
5、DOM模型分类4
6、非标准DOM模型示例图:
4
二、PHPDOM解析XML数据4
1、PHPDOM模型解析XML三大关键词4
2、PHPDOM模型常用的四大类5
1)DOMDocument(文档类-面)5
2)load方法载入xml到内存,形成dom树结构5
3)获取同级兄弟节点,形成串5
4)通过nodeName或nodeValue获取节点信息6
3、PHPDOM模型中的查操作(四步走)6
4、PHPDOM模型中的遍历操作(四步走)7
5、属性查询(四步走)9
6、PHPDOM模型中的增加操作(六步走)11
7、PHPDOM模型中的修改操作(几步走)13
1)值操作(五步走)13
2)节点操作(六步走)13
8、PHPDOM模型中的删除操作(六步走)14
9、PHPDOM模型中的属性操作(几步走)16
三、PHPSimpleXML实现XML数据解析19
1、SimpleXML相关类19
2、SimpleXML查询操作20
3、SimpleXML遍历查询21
1)通过for或foreach循环结构遍历输出21
2)通过children()方法实现遍历输出22
4、SimpleXML中的属性操作23
5、SimpleXML中的增加操作24
四、SimpleXML读取第三方天气预报API25
五、Xpath查询语言27
1、通过绝对路径方式查询数据27
2、使用相对路径方式查询数据29
3、通过*号查询所有数据30
4、通过表达式查询数据31
5、通过@符号查询节点属性32
六、通过SimpleXML+Xpath实现在线词典32
一、PHP与XML
1、为什么需要PHP解析XML
2、PHP解析XML两种常用方式
PHPDOM解析XML(主要是实现增删改操作)
PHPSimpleXML解析XML(主要是实现查询操作)
3、XML执行流程
当系统执行XML文件时,会自动执行以下步骤:
1)首先在内存中开辟一块内存空间
2)载入XML文件到内存,并形成XML树结构
4、XML树结构——DOM模型
5、DOM模型分类
标准DOM模型(CSS、JavaScript)
非标准DOM模型(PHP)
6、非标准DOM模型示例图:
二、PHPDOM解析XML数据
1、PHPDOM模型解析XML三大关键词
面、串、点
2、PHPDOM模型常用的四大类
documentobjectmode
常用类:
DOMDocument(面)
DOMNodeList(串)
DOMElement(点)
DOMNode(点)
1)DOMDocument(文档类-面)
DOMDocument:
:
__construct(
[string$version[,string$encoding]]
)
参数说明:
version:
xml版本号,目前为1.0
encoding:
编码格式,utf-8
2)load方法载入xml到内存,形成dom树结构
mixedDOMDocument:
:
load(string$filename)
参数说明:
filename:
xml文件名称
3)获取同级兄弟节点,形成串
DOMNodeListDOMDocument:
:
getElementsByTagName(stringname)
参数说明:
name:
节点的名称
串中的两个常用属性和方法
DOMNodeListlength:
输出当前xml页面多有多少个节点信息
DOMNodeDOMNodelist:
:
item(int$index):
通过index索引(默认从0开始)获取指定节点
4)通过nodeName或nodeValue获取节点信息
nodeName节点名称
nodeValue节点值
3、PHPDOM模型中的查操作(四步走)
第一步:
在内存中开辟存储空间,形成“面”
第二步:
载入XML文件到内存,形成DOM树结构
第三步:
获取同级兄弟节点,形成“串”
第四步:
通过查询条件,获取相应的数据(“点”)
示例代码:
demo01.php
data.xml
运行结果:
4、PHPDOM模型中的遍历操作(四步走)
第一步:
开辟内存空间,形成“面”
第二步:
载入xml文件到内存,形成DOM树
第三步:
获取同级兄弟节点,形成“串”//DOMNodeList
第四步:
通过for循环遍历输出节点信息
示例代码:
demo02.php
data.xml
运行效果:
5、属性查询(四步走)
第一步:
开辟内存空间,形成“面”
第二步:
载入xml文件到内存,形成DOM树
第三步:
获取同级兄弟节点,形成”串“
第四步:
通过item获取指定节点信息并读取属性
要用到的知识点:
boolDOMElement:
:
hasAttribute(string$name):
判断是否具有指定名称的属性
boolDOMNode:
:
hasAttributes(void):
判断是否具有属性
stringDOMElement:
:
getAttribute(string$name):
获取指定名称的属性值
示例代码:
demo03.php
data.xml
运行效果:
6、PHPDOM模型中的增加操作(六步走)
第一步:
开辟内存空间,形成”面“
第二步:
载入xml文件到内存,形成DOM树
第三步:
创建新节点
第四步:
创建子节点
第五步:
追加子节点到父节点
第六步:
保存内存中的信息到xml文件中
要用到的知识点:
DOMElementDOMDocument:
:
createElement(string$name[,string$value]):
创建新节点
参数说明:
name:
节点名称
value:
可选参数,节点的值
DOMNodeDOMNode:
:
appendChild(DOMNode$newnode):
追加子节点
参数说明:
newnode:
新节点
intDOMDocument:
:
save(string$filename):
保存内存中的信息到xml文件中
参数说明:
filename:
文件名称
示例代码:
demo04.php
运行效果:
data.xml
7、PHPDOM模型中的修改操作(几步走)
修改操作分类:
1)值操作(五步走)
第一步:
开辟内存空间,形成”面“
第二步:
载入xml文件到内存,形成DOM树
第三步:
查询要修改的节点
第四步:
通过nodeValue修改值信息
第五步:
保存文件到xml
示例代码:
demo05_1.php
运行效果:
data.xml
2)节点操作(六步走)
第一步:
开辟内存空间,形成”面“
第二步:
载入xml文件到内存,形成DOM树
第三步:
查找要修改的老节点
第四步:
创建新节点
第五步:
查找父节点,替换老节点
第六步:
保存信息到xml文件中
要用到的知识:
DOMNodeDOMNode:
:
replaceChild(DOMNode$newnode,DOMNode$oldnode):
更新节点
参数说明:
newnode:
新节点
oldnode:
老节点
示例代码:
demo05_2.php
运行效果:
data.xml
8、PHPDOM模型中的删除操作(六步走)
第一步:
开辟内存空间,形成”面“
第二步:
载入xml文件到内存,形成DOM树
第三步:
查找要删除的老节点
第四步:
查找老节点的父节点
第五步:
删除操作
第六步:
保存信息到xml文件中
要使用的知识点:
DOMNodeDOMNode:
:
removeChild(DOMNode$oldnode):
删除子节点
参数说明:
oldnode:
要删除的老节点
示例代码:
demo06.php
运行效果:
data.xml
9、PHPDOM模型中的属性操作(几步走)
第一步:
开辟内存空间,形成”面“
第二步:
载入xml文件到内存,形成DOM树结构
第三步:
查找要添加或修改属性的节点
第四步:
设置属性信息
第五步:
保存信息到xml文件中
要用到的知识点:
添加与修改操作
DOMAttrDOMElement:
:
setAttribute(string$name,string$value)添加操作
DOMAttrDOMElement:
:
setAttribute(string$name,string$value)修改操作
当我们的节点不具有指定属性时,那么setAttribute方法就是新增属性,否则就是修改属性
参数说明:
name:
属性名称
value:
属性的值
删除操作
boolDOMElement:
:
removeAttribute(string$name)删除操作
参数说明:
name:
要移除的属性名称
示例代码:
添加操作:
demo07.php
运行效果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- XML 编程
![提示](https://static.bdocx.com/images/bang_tan.gif)