前言:
眼前咱们对“phpxml格式”可能比较关怀,大家都想要知道一些“phpxml格式”的相关文章。那么小编在网络上汇集了一些对于“phpxml格式””的相关文章,希望小伙伴们能喜欢,我们一起来了解一下吧!学习思路1.什么是XML
Extendisble mark language 【可扩展的标记语言】
标记语言
HTML,XHTML,HTML5,XML
你们知不知道他们之间有什么关系吗?
可扩展
在HTML中 写一个表格我们使用
预定义标签,含义已经被定义好了。
标签可以自定义 ,
特点
XML 指可扩展标记语言,是独立于软件和硬件的信息传输工具。
XML 是一种标记语言,很类似 HTML。
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准。
2.Xml的作用
总共分为两大部分:
数据储存
配置文件储存数据:
在一些软件:QQ,飞秋,都有配置文件的,固定参数数据储存,在一些C/S模式的软件中应用的非常多,在编程语言中,java ,net ,C#
临时表的数据储存:
在实际的项目中, 一些固定不变得数据和数据量比较少的数据我们会使用xml 来进行储存。例如:地理信息数据
数据交换
AJAX 角度
进行固定格式的数据交换
Webservice 网络服务
例如:查询天气,航班信息查询
二、XML结构 代码举例: 结构分析: 总结特点
1.必须要有根元素,有且只能有一个。
2.Xml的元素类型有三种:
元素节点
文本节点:
标签中含有文本内容
属性节点:
在节点中有属性存在,我们就说这个节点是一个属性节点
三、XML语法1.语法总则
必须以XML声明开头
它必须拥有唯一的根元素
开始标签必须与结束标签相匹配
元素对大小写敏感
所有的元素都必须关闭
所有元素都必须正确嵌套
必须对特殊字符使用实体
2.文档声明
声明一个xml文件
<?xml version=”1.0” encoding=”utf-8” ?>语法规则: 必须 <?xml ?>说明 version : xml的版本,通用版本1.0 Encoding: 字符编码格式
运行上述代码,结果如下:
注意:字符编码格式统一,xml 编码的声明,必须要和文件的格式保持一致
3.命名规则【标签元素】
为什么要有这个命名规则呢?
因为我们XML 它是一个可扩展的标记语言,标签自己定义
名称可以是字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字符“xml”(或者Xml、XML)开始
名称不能包含空格
可以使用任何名称,没有保留的字词
插脚一脚:
4.定义元素【标签】 Xml三种节点
元素节点
文本节点
属性节点
元素的三种表现形式:
元素包含元素:
元素包含文本节点:
元素包含属性:
实例
5.定义属性 描述
属性他就是用来描述一些事物元素的【附加描述信息】
属性必须依附于元素来实现
作用
描述信息的定义
描述信息可以在属性和标签之间进行切换
注意使用事项
1.属性必须依附于元素来实现
2.必须定义在开始标签
6.实体引用【CDATA区】
对比人物大小如下图:
描述
在标签内部写字符串文本的时候,会有一些特殊的字符例如:< > 空格,等。我想需要在文本中展示出来,这个时候我们不能直接写在里面,要使用实体引用
实体引用
在HTML中的实体引用,
空格:
在XML中使用实体引用
如果特殊符号特别多,这个时候怎么办?
多个实体引用
语法:<![CDATA[data]]>
Data: 数据
使用CDATA 区 如下
7.注释
在HTML中使用注释
<!-- 注释内容 -->
在XML中同样使用
注意:注释不能写在声明的开始
8.批处理指令【了解】
处理指令(PIs)允许文档包含用于应用程序的指令
处理指令很少被使用。主要用于链接 XML 文档到样式表【xml-stylesheet】
引入方法:
定义样式文件
Books.css
代码:
p{
color:red;
}
XML 实现
课堂练习:
编写xml文档,将如下所示user数据用XML的方式来保存
四、PHP解析XML1.什么是XML的解析
其实就是将xml结构中储存的数据给提取出来, 这个提取的过程我们把他叫做解析,解析出来的内容就是,文本节点包含的内容还有属性
2.PHP解析XML方式
手册位置:
在PHP中解析XML文档,有十几种操作, 但是我们主要关注 DML操作和SimpleXML
DOM: 是XML解析通用方法,不仅适用于PHP ,也使用其他语言【操作方法和函数是一样】
SimpleXML: 是PHP语言所特有的处理方法, 将一些复杂DOM操作,进行了方法的封装,可以简单实现XML的操作
3.创建一个XML文件 创建步骤
1.声明文档格式
2.定义元素
3.元素结构化
最终代码
<?xml version="1.0" encoding="utf-8" ?><words> <word> <name>no zuo no die</name> <fayin>no zuo no die</fayin> <fanyi>不作死就不会死</fanyi> </word> <word> <name>hello </name> <fayin>hello</fayin> <fanyi>你好</fanyi> </word></words>
想操作XML必须确保xml没有任何语法错误!
4.DOM操作方式【了解】 实现原理
整个转换操作是在计算机内存中实现的。
实现思路
1.读取文档
2.获取文档内容
3.将文档的内容展示出来
使用语法
操作类DOMDocument
$dom = new DOMDocument(version,encoding);
说明:version 我们定义XML 是的版本,
Encoding 定义时候的编码格式
实现代码:
//读取创建的单词的xml 文档//实例化操作对象DOM$dom = new DOMDocument('1.0', 'utf-8');//加载words.xml 文
操作方法
语法:对象模型->load(url);
说明:url 可以是据对路径也可以是相对路径
作用:加载要操作的xml文件
对象加载文件之前和文件之后区别:
读取节点
语法:当前对象->getElementsByTagName(‘标签名’);
作用:选中指定所有的标签
获取了所有的节点:
//加载words.xml 文件$dom->load('words.xml');$names = $dom->getElementsByTagName('name');var_dump($names->item(1));exit;
从节点中获取文本内容
语法:选中的节点-> Item(0);
作用:选中具体的操作节点
//加载words.xml 文件$dom->load('words.xml');$names = $dom->getElementsByTagName('name');var_dump($names->item(1));exit;
读取节点属性
当前节点对象->getAttribute(‘属性名称’);
增加节点
删除节点
5.SimpleXML方式【重点】 实现原理 使用语法使用函数
Simplexml_load_file(path);
说明:path 就是要加载的文件的路径【相对路径也可以是绝对路径】
作用:1.加载xml文件
2.实例化操作类【SimpleXmlElement】
Simplexml_load_string(str);
说明:str 就是一个xml格式的字符串
作用:将一个xml格式的字符串,转换成就可以操作的对象
File_get_contents(path);
读取节点
$dom = simplexml_load_file('words.xml');//循环读取foreach ($dom->word as $key => $value) {echo $value->name;}Simplexml_load_string()
读取节点属性
语法:当前节点对象->attributes()
作用:获取当前节点的属性的值
创建节点
语法:操作对象->addChild(节点名称,节点内容)
语法:操作对象-asXML(‘保存的文件以及路径’);
$str = file_get_contents('words.xml');// var_dump($str);exit;$dom = simplexml_load_string($str);//增加word节点$word = $dom->addChild('word');//增加name$word->addChild('name', 'xiaoming');//fanyi$word->addChild('fayin', '小明');//翻译$word->addChild('fanyi', '小明');//将追加的内容写入文件即可$dom->asXML('words.xml');
删除节点
在PHP数组中我想删除某个值,使用unset($arr[1])
也是使用unset() , 但是不是unset 数组,而是对象的属性名称
修改操作自己完成
6.DOM和SimpleXML对比 实现原理对比
DOM 他是将XML文档转换成可以操作的模型【在内存中存在】,这个时候在使用DOM封装的操作对象来对这个模型进行CURD操作。
SimpleXML 它是将XML文档直接转换成对象来直接进行CURD操作
代码对比六、XPATH1.什么是XPATH
XPath是一门在 XML 文档中查找信息的语言,XPath可用来在 XML 文档中对元素和属性进行遍历。
而且Xpath并不仅仅应用于XML数据查询,其在很多语言中(PHP、Java、.NET以及Javascript),都可以广泛使用。
参考文献: @link
使用Xpath定义路径表达式 可以按需查找节点 并返回集合形式。
2.查找规则
【/】设置绝对路径
语法:操作对象->xpath(‘/节点名’);
作用:选取从根节点开始查找
【//】全局查找
语法规则:操作对象->xpath(‘/节点//节点名称’);
作用:查找节点, 不管节点在什么层次下都返回节点的内容
使用例子:
【..】选取父节点
语法:操作对象->xpath(‘/节点1/节点2/节点3/..’);
作用:
【[]】过滤节点
语法规则:操作对象-xpath(‘/节点[节点名称=节点里面的内容]’);
作用:根据节点内容来查找节点
【@】过滤属性
语法:操作对象-xpath(‘/节点[@属性=属性的值]’);
作用:
3.XPATH在线词典应用1.完成需求
提供一个input 框 当用户输入要查找的单词的时候返回这个单词的所有翻译结果。
2.完成步骤
1.使用函数来加载单词xml文件
2.获取用户传递的参数
3.使用xpath进行数据的检索
4.将结果返回并且展示到页面中
因为检索出来的内容是多个,所以返回格式是:数组包含对象
要想trans 里面的内容向,word 一样可以使用【对象->word】这种形式来输出
可以将CDATA进行转码
3.完成代码
<?php// 1.使用函数来加载单词xml文件$doc = simplexml_load_file('words_all.xml', 'SimpleXMLElement', LIBXML_NOCDATA);// 2.获取用户传递的参数if (!empty($_POST['keywords'])) { // 3.使用xpath进行数据的检索 $res = $doc->xpath('/wordbook/item[word="' . $_POST['keywords'] . '"]');}// 4.将结果返回并且展示到页面中;?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ";><html xmlns="; xml:lang="en"><head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>在线词典查询</title></head><body> <form action="" method="post"> 请输入单词:<input type="text" name="keywords" /> <input type="submit" value="提交查找" > </form> <?phpecho $res[0]->word . '<br/>';echo $res[0]->tags . '<br/>';echo $res[0]->trans;?></body></html>
标签: #phpxml格式