XML作为一种用来跨平台的通用语言,越来越受重视。XML是一种标准化的文本格式,可以在web上表示结构化信息,利用它可以存储有复杂结构的诗句信息,XML是HTML的补充,但XML并不是HTML的替代品,在将来的网页开发中,XML将被用来描述、存储数据,而HTML是用来格式化和显示数据的。
随着HTML的不断发展,W3C组织意识到HTML存在一些无法避免的问题:
1、不能解决所有解释数据的问题,例如影音文件或化学公式、音乐符号等其他形式的内容;
2、效能问题,需要下载整份文件才能对文件做搜寻的动作;
3、扩充性、弹性、易读性都不佳。
下面是XML语言的特点:
1、XML是一种元标记语言,所谓“元标记语言”,是指开发者可以根据需要定义自己的标记,例如,开发者可以定义标记<book><name>,任何满足XML命名规则的名称都可以作为标记,这就为不同应用程序的应用打开了大门;
2、允许通过使用自定义格式,表示、交换和处理出具库可以理解的数据;
3、基于文本的格式,允许开发人员描述结构化数据并在各种应用之间发送和交换这些数据;
4、有助于服务器之间传输结构化数据;
5、XML使用的是非专有的格式,不受版权、专利、商业秘密或是其他种类的知识产权的限制,XML的功能是非常强大的,同时对于人类或是计算机程序来说都容易阅读和编写,因而成为交换语言的首选,网络带给人类的最大好处是信息共享,在不同的计算机值ijianfasong数据,而XML用来告诉我们“数据是什么”,利用XML可以在网络上交换任何信息。
例如一个XML文件中的代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<电器>
<电器1>
<名字>电视机</名字>
<生产时间>2017年1月20日</生产时间>
</电器1>
<电器2>
<名字>电冰箱</名字>
<生产时间>2017年1月20日</生产时间>
</电器2>
<电器3>
<名字>手电筒</名字>
<生产时间>2017年1月20日</生产时间>
</电器3>
</电器>
XML语法基础
1、XML文档的组成和声明:
一个完整的XML文档由声明、元素、注释、字符引用和处理指令组成,所有这些XML文档的组成部分都是通过元素标记来指明的。
XML生命必须作为XML文档的第一行,前面不能有空白、注释或其他的处理指令,完整的声明格式如下:
<?xml version="1.0" encoding="UTF-8" ?>
2、XML元素介绍:
(1)元素类别:
在XML文档中,元素分为非空元素和空元素两种类型,一个XML非空元素是由开始标记、结束标记和标记之间的数据构成的。
<开始标记>标记内容</结束标记>
而空元素就是不包含任何内容的元素,例如:
<开始标记></结束标记>
非空元素还可以这样表示:
<开始标记 content="标记内容"></结束标记>
(2)元素命名规范:
a、元素名中可以包含字母、数字和其他字符,虽然可以包含中文,但是在不支持中文的环境中将不能够解释包含中文字符的XML文档;
b、元素名中不能以数字或标点符号开头;
c、元素命中不能包含空格。
3、实体引用:
XML元素内容中不能包含“<”、“>”等内容,因为XML不知道标签的结尾从哪里开始。
要解决这个问题,就要使用实体引用,如下:
“<”为"<"
“>”为">"
“&”为"&"
“ ' ”为"'"
“ " ”为"&qout;"
例如:
<ok>2 &rt; 1</ok>
4、XML命名空间:
如果一个XML文档中出现了HTML文档中才出现的元素名称,如:
<body>
<form></form>
</body>
则浏览器在解析的时候会出错,不知道到底是按照XML还是HTML进行解析,要解决这个问题,可以使用名称前缀:
<s:body>
<s:form></s:form>
</s:body>
在PHP中创建XML文档
XML是标记语言,PHP是脚本语言,使用脚本语言是可以创建标识语言的。
在网站中建立文件xml.php,输入以下代码:
header('Content-type:text/xml;charset="utf-8"');
echo '<?xml version="1.0" encoding="utf-8" ?>';
echo '<商品>';
echo '<名字>PHP学习笔记</名字>';
echo '<时间>2017年1月1日</时间>';
echo '</商品>';
运行这个文件,即可看到效果。
以上通过PHP创建xml文档是静态方法,如果想要从获得的数据中动态创建或者读取XML文件,应该使用什么方式呢?最简单的方法就是使用PHP中提供的SimpleXML扩展。
header('Content-type:text/xml;charset="utf-8"');
$xmldoc = '<?xml version="1.0" encoding="utf-8" ?>';
$xmldoc .= '<商品>';
$xmldoc .= '<名字>赵一鸣PHP学习笔记</名字>';
$xmldoc .= '<时间>2017年1月1日</时间>';
$xmldoc .= '</商品>';
$simpleXmlObj = new SimpleXMLElement($xmldoc);
echo $simpleXmlObj->asXML();
更改以上最后一行代码为:
echo $simpleXmlObj->asXML(‘a.xml’);
访问XML特定节点元素和属性
通过simplexml类方法addAttribute和addChild添加XML元素和属性,具体步骤如下:
<?php
header('Content-type:text/xml;charset="utf-8"');
$xmlObj = simplexml_load_file('test.xml');
$xmlObj->addAttribute('english', 'electrical');
$xmlObj->asXML('b.xml');
查看生成的b.php中的代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<电器 english="electrical">
<电器1>
<名字>电视机</名字>
<生产时间>2017年1月20日</生产时间>
</电器1>
<电器2>
<名字>电冰箱</名字>
<生产时间>2017年1月20日</生产时间>
</电器2>
<电器3>
<名字>手电筒</名字>
<生产时间>2017年1月20日</生产时间>
</电器3>
</电器>
simplexml_load_file()加载xml文件,通过类方法addAttribute()在跟元素添加属性。
动态创建XML文档
使用SimpleXML对象可以十分方便的读取和修改XML文档,但是无法动态建立XML,如果想动态的创建XML文档,需要使用DOM来实现,DOM是文档对象模型,是W3C组织推荐的处理可扩展标志语言的标准编程接口。
下面是使用DOM动态创建XML文档的方法:
<?php
$dom = new DOMDocument('1.0', 'utf-8');//创建DOM对象
$store = $dom->createElement('store');//创建store节点
$dom->appendChild($store);//将节点插入dom中
$album = $dom->createElement('album');
$albumAttr = $dom->createAttribute('catalog');//创建属性
$albumAttr->value = 'song';//给属性赋值
$album->appendChild($albumAttr);//将属性插入到节点中
$store->appendChild($album);
$name = $dom->createElement('name');//创建普通节点
$nameVal = $dom->createTextNode('天地一斗');//创建文本节点
$name->appendChild($nameVal);//将文本节点插入到普通节点中
$album->appendChild($name);
$author = $dom->createElement('author');
$authorVal = $dom->createTextNode('jay');
$author->appendChild($authorVal);
$album->appendChild($author);
$heading = $dom->createElement('heading');
$headingVal = $dom->createTextNode('周杰伦专辑');
$heading->appendChild($headingVal);
$album->appendChild($heading);
/*//第一种方法:保存为d.xml文件
header('Content-type:text/html;charset="utf-8"');
$dom->save('d.xml');*/
//第二种方法:本页面直接打开
header('Content-type:text/xml');
echo $dom->savexml();
- 0、php安装
- 1、选择PHP作为首选后端语言的原因
- 2、PHP基本语法
- 3、PHP中变量和常量的区别
- 4、PHP中单引号和双引号的区别
- 5、PHP检测数据类型的几种方式
- 6、PHP数据类型转换
- 7、return、break、continue的区别
- 8、PHP代码重用
- 9、字符串移除或添加函数
- 10、PHP中字符串大小写切换以及翻转和加密
- 11、PHP字符串截取和截取函数
- 12、PHP字符串替换和比较函数
- 13、PHP字符串url解析和实体转换
- 14、addslashes在预定义字符串前添加反斜杠
- 15、PHP中的数组基本概念
- 16、数组函数implode、explode、in_array、each、list
- 17、PHP数组函数(count、reset、end、next、current、key)
- 18、ZendStudio软件破解安装包免费下载
- 19、【图文】ZendStudio汉化方法
- 20、数组函数in_array、array_search、array_change_key_case、array_chu
- 21、关闭PHP提示的方法(运行出现Notice : Use of undefined constant 的完美解决方案
- 22、PHP数组函数(array_diff_ukey、array_diff_uassoc、array_intersect
- 23、PHP数组函数(array_fill、array_filter、array_flip、array_key_exis
- 24、PHP数组去重及向前向后删除元素的函数
- 25、PHP数组函数(array_map、array_walk、array_walk_recursive)
- 26、PHP数组函数(compact、extract)
- 27、PHP数组函数(array_merge、array_merge_recursive)
- 28、PHP数组函数(range、array_count_values、array_product)
- 29、PHP数组函数(array_reduce、array_slice、array_splice、array_sum)
- 30、PHP数组排序函数总结
- 31、PHP中面向对象的基本概念及定义对象的方法
- 32、PHP创建对象与构造函数
- 33、PHP对象的释放
- 34、PHP面向对象的特性(抽象、封装、继承、多态)
- 35、PHP面向对象的public、private、protected之间的区别
- 36、PHP面向对象中的final和const的用法
- 37、PHP面向对象的static关键字
- 38、PHP中的单例模式
- 39、$this、self、parent详解
- 40、PHP中面向对象的抽象类和抽象方法
- 41、PHP面向对象中的接口interface
- 42、PHP面向对象中的魔术方法
- 43、面向对象方法get_object_vars、is_subclass_of、interface_exists
- 44、PHP中的数学函数方法总结
- 45、PHP文件处理disk_total_space、disk_free_space、dirname、file_exis
- 46、PHP目录操作rename和scandir
- 47、PHP操作目录opendir、readdir、glob
- 48、PHP打开fopen、读取fread、写入文件fwrite
- 49、PHP文件处理file_get_contents、file_put_contents、fgetc、fgets、fg
- 50、PHP截取字符串出现乱码的解决方法(UTF8和GBK)
- 51、PHP文件内容分页操作,避免乱码
- 52、PHP文件操作函数file、set_include_path、copy
- 53、PHP文件操作函数filemtime、filectime、fileatime、touch
- 54、PHP文件操作指针函数feof、ftell、fseek、rewind、fpassthru
- 55、PHP文件操作pathinfo、realpath、flock、tempnam、tmpfile
- 56、设置php.ini配置实现表单文件上传流程
- 57、PHP将上传到临时文件夹的文件移动到服务器指定文件夹内
- 58、PHP+input表单实现多文件上传
- 59、PHP通过超链接实现文件下载
- 60、发送header文件头信息实现文件下载
- 61、PHP中的日期时间_时区时间戳函数使用
- 62、PHP操作COOKIE缓冲区影响COOKIE传递方式
- 63、PHP中SESSION定义、建立、删除方式
- 64、PHP.INI配置文件中关于session的设置
- 65、HP中Session缓存的概念与用法
- 66、PHP自定义Session处理机制
- 67、通过MYSQL数据库操作Session会话完整源码类
- 68、PHP连接数据库实现分页代码
- 69、HTTP缓存实现原理详解
- 70、PHP连接数据库实现搜索+分页功能
- 71、PHP图像处理之建立画布填充颜色、打开不同图像类型处理
- 72、PHP颜色或图像填充及不同填充方式
- 73、PHP图像处理之画线&定义线样式&宽度&风格&笔刷
- 74、PHP图像处理:绘制色素及矩形图
- 75、PHP图像处理之画圆、弧线、网站饼状统计图绘制
- 76、PHP图像处理之绘制多边行及文字绘制
- 77、PHP 图像处理之获得文字宽高属性&图片水印函数功能
- 78、PHP生成图片验证码demo【OOP面向对象版本】
- 79、PHP图像处理 图像处理之处理文字及获得文字尺寸属性,imagecopymerge imagecop
- 80、替换用户输入的QQ表情
- 81、PHP封装MYSQL数据库操作类源码
- 82、PHP与XML技术结合使用解析