gml(1969)->sgml(1985)->html(1993)->xml(1998)
Genaral Markup language
gml :通用标记语言
IBM 1969 专家共同研究一个课题:一个程序如何运行在多个系统中(系统可移植性)
sgml :标准通用标记语言
IBM 1985 对基本的gml进行了升级
html :英国科学家博纳斯.李 由 sgml 中定义了20个html标签实现了世界上第一个网页
html :1993 W3C 进行推广和使用
xml :1998年
XML
全 称:Extensible Markup Language
中文名:可扩展标记语言
用于标记电子文件使其具有结构性的标记语言,可以用来标记数据,定义数据类型,允许用户对自己的标记语言进行定义的源语言。
面试题:什么是XML,XML主要用途是什么?
答:可扩展标记语言,XML用于传输数据与存储数据。
1)html标签不能自定义,从标签上不能达到“见词知意”的目的
<表格>表格>
2)html将数据与格式绑定在一起
xml只负责数据的传输与存储,其标签没有任何意义
3)不同浏览器解html不同
html语法要求不严格
等等
html主要用于数据的显示,xml主要用于数据传输
快递100接口(Java) XML PHP
php+mysql 金山词霸
php+xml 金山词霸
l 文档声明
l 元素
l 元素属性
l 注释
l 特殊字符
l CDATA区段
l 处理指令
需要先使用文档声明来声明XML文档
最简单的语法:
l
l version 版本为1.0 (代表当前xml文档的版本)
l encoding 编码格式 (编码格式utf-8、big5、gb2312)
l standalone 是否独立(是否依靠dtd文件) 默认yes
作用:告诉浏览器在解释时所采用的版本与格式等信息
l 一个标签分为起始和结束标签(不能省略)
错误:
正确:
l 一个标签中可以嵌套若干子标签,但所有标签必须合理的嵌套,不允许有交叉嵌套
错误:
正确:
l 一个XML文档必须有且仅有一个根标签,其他标签都是这个根标签的子标签
元素的命名规则
l 元素(标签)的名称可以包含字母、数字、减号、下划线和英文句点
正确的:
错误的:!@#>
l 严格区分大小写;
正确的:
错误的:
l 只能以字母或下划线开头;
正确的:
错误的:<123abc>123abc>
l 名称字符之间不能有空格或制表符;
正确的:
l 名称字符之间不能使用冒号
正确的:
错误的:
l 一个元素可以有多个属性
l 属性值一定要用引号(单引号或双引号)引起来
l 属性名称的命名规范与元素的命名规范相同
l 元素中的属性是不允许重复的
l 标签属性所代表的信息也可以被改成用子元素的形式来描述
基本语法:
注:XML声明之前不能有注释,注释不能嵌套
可以使用以下字符代替xml文档中的特殊字符
CDATA:Character Data
作用:把标签当做普通文本内容
语法:
示例代码:
对于特殊字符与CDATA区段,比较?
共同点:都是用于对特殊字符的转化
不同点:特殊字符只能用于数据量较少的情况,比如小于号、大于号等情况
CDATA区段可以用于大批量数据的转化,如文章描述、文章内容等信息
PHP DOM模型进行XML解析(增加、修改、删除)
PHP SimpleXML(查询)
Json json_encode() json_decode()(推荐)
1、在内存中开辟存储空间——”面”
2、加载XML文件到内存,并形成DOM树结构
3、获取同级兄弟节点——“串”
4、获取指定的文本节点并读取其值——“点”
要用到的知识点:
DOMDocument
参数说明:
$version:xml版本号,采用1.0
$encoding:编码格式,utf-8
要用到的知识点:
参数说明:
$filename:要载入xml文件的名称
要用到的知识点
DOMNodeList
参数说明:
$length:获取到当前串的长度
item(索引,默认从0开始):获取指定节点
getElementsByTagName()
参数说明:
$name:要获取元素(标签、标记)的名称
要用到的知识点:
参数说明:
$index:通过索引获取指定元素
增加四步走:
1)开辟面空间
2)载入xml到内存,形成DOM树
3)创建节点并追加
4)保存内存数据到XML文件中
要用到的知识点:
参数说明:
$name :创建的节点名称
$value :可选参数,创建节点的值
参数说明:
$newnode :追加的新节点名称(要求类型为DOMElement或DOMNode)
参数说明:
$filename:要保存的xml文件名称
删除操作五步走:
1)开辟内存空间,形成“面”
2)载入xml文件到内存
3)找到要删除的节点
4)找到其父节点并移除其指定的子节点
5)保存内存数据到xml文件中
要用到的知识点:
参数说明:
$oldnode:要移出的节点
在PHP DOM更新操作分为两种:
1)值操作,只更新某个节点的值信息(通过nodeValue属性设置即可)
2)节点操作,需要特定的函数辅助完成(通过replaceChild方法设置即可)
1)开辟内存空间,形成“面”
2)载入xml文件到内存,形成dom树
3)找到要更新的节点,更新其值
4)保存内存数据到XML文件中
1)开辟内存空间,形成“面”
2)载入xml文件到内存
3)创建新节点
4)找到旧节点
5)找到父节点,然后用新节点替换老节点
6)保存内存数据到XML文件中
要用到的知识点:
参数说明:
$newnode:创建的新节点
$oldnode:要更新的旧节点
要用到的知识点:
在属性的添加与更新操作用到的是同一个方法setAttribute,当当前元素无属性时,系统会自动添加属性,如果已存在,则更新其值
参数说明:
$name:属性名称
$value:属性的值
bool DOMElement::hasAttribute ( string $name ) :判断当前元素是否具有某一属性
bool DOMNode:: hasAttributes ( void ) :判断当前元素是否具有属性
string DOMElement::getAttribute( string $name ) :获取元素的属性
参数说明:
$name :属性名称
要用到的知识点:
bool DOMElement::removeAttribute ( string $name )
参数说明:
$name:要移出的属性名称
simpleXMLElement simplexml_load_file ( string $filename) :载入xml文件到内存并生成simpleXML对象
SimpleXMLElement::__construct ( string data)
示例代码:
方法一:通过foreach直接遍历数组
方法二:
通过children()方法实现对xml数据的遍历输出
该方法可以直接获取到当前对象的子节点
在simplexml对象中,对于属性的读取有些特殊,不能通过以上方法直接读取,必须借助外在方式:
通过数组方式直接读取:
通过attributes()方法获取到属性对象,并输入属性的值