php xml 入门学习资料


Posted in PHP onJanuary 01, 2011

起因:

今天做项目时遇到一个问题:需要动态更新主页上的图片,以示本站不是做完了就算了,是有人一直在维护。好了,需求有了,如何实现?!

我的想法如下:

图片存放位置:放在一个文件夹中;图片的类型:不能固定了,只要是图片就可以上传显示;图片名字:按原始名字有点不正规,应该重新命名一下。

显示的位置:这就需要对图片指定相应的id,这个id是固定的,要与图片一一对应。于是就有一个记录一一对应的关系文件,可以选择csv文件,选择数据库记录,最后决定选择xml,这个东西在学校一直没学懂,我一直回避使用这东西,怕麻烦。今天算是挑战一下,花了一下午时间,终于有所收获。
学习步骤:

明确目标: 1、理解xml的结构;2、如何动态建立xml文件;3、如何读取和修改xml文件

一、 xml的结构是树形结构:
这个好理解。简单写一个:

<pictures> 
<picture> 
<id>1</id> 
<name>pic 1</name> 
</picture> 
<picture> 
<id>2</id> 
<name>pic 2</name> 
</picture> 
<picture> 
<id>3</id> 
<name>pic 3</name> 
</picture> 
</pictures>

二、我使用的php创建:

1. 定义一个DOM对象: $dom = new DomDocument('1.0');

2. 添加子元素:$dom->appendChild($dom->createElement("pictures"))

 内存中的原型是:<pictures></pictures>

 继续往里边加子元素:*->appendChild($dom->createElement("picture"));

 继续加: **->appendChild($dom->createElement("id"));

 不加子元素了,加节点: ***->appendChild($dom->createNode("1"))

 上面的*代表上上一行的代码;这样一来就可以写成一行:

 $dom->appendChild($dom->createElement("pictures"))->appendChild($dom->createElement("picture"))

 ->appendChild($dom->createElement("id"))->appendChild($dom->createNode("1"));

 现在内存中应该是这样的:<pictures><picture><id>1</id></picture></pictures>

 显然里要求还远,很容易看懵的。

因此一般这么写: $pictures = $dom->appendChild($dom->createElement("pictures"));

$picture = $pictures->appendChild($dom->createElement("picture"));

$id = $picture->appendChild($dom->createElement("id"));

  $id->appendChild($dom->createNode("1"));

下面还可以接着创建name节点:

$name = $picture->appendChild($dom->createElement("name"));

 $name->appendChild($dom->createNode("pic 1"));

接下来还要接着创建picture节点:

$picture = $pictures->appendChild($dom->createElement("picture"));

其实这些麻烦的事可以写个for循环来实现。

生成xml文件:

$dom->formatOutput = true;//设置格式化输出

$dom->save("erhsh.xml");//保存xml文件

三、读取xml文件。

1、还是定义一个DOM对象;$dom->new DomDocument();

2、加载xml文件:$dom->load("erhsh.xml");

3、按照节点的名字取得节点集合:$dom->getElementByTagName("pictures");

这种方法有点麻烦,参考文件:
https://3water.com/article/25853.htm

不过有一种我喜欢的方法:simplexml_load_file("erhsh.xml");

 此方法可以把xml文件的内容转换成对象的形式,使用"->"结和"[]"很容易去的xml的内容;

但是在开发中还是遇到了一点问题:

当执行:print_r($xml->pictures);时输出的是一个 SimpleXMLElement 对象,([picture] => array([0]=>array(...)[1]=>array(...)));

再执行:print_r($xml->pictures->picture);输出的是n个分开的对象。

执行:print_r($xml->pictures->picture[0]->id);输出的还是一个对象。这就很不理解,应该是一个字符串。 最后网上说是“迭代对象”,

应该使用echo输出,print_r(), var_dump()输出不准确。参考地址:https://3water.com/article/25852.htm

当然也可以修改xml的值通过这个方法。
写的很烂,仅供本人备忘。

PHP 相关文章推荐
php error_log 函数的使用
Apr 13 PHP
PHP 日期时间函数的高级应用技巧
Oct 10 PHP
php获取汉字首字母的函数
Nov 07 PHP
PHP实现视频文件上传完整实例
Aug 28 PHP
laravel安装和配置教程
Oct 29 PHP
Laravel 5 学习笔记
Mar 06 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
Yii框架实现邮箱激活的方法【数字签名】
Oct 18 PHP
PHP实现微信红包金额拆分试玩的算法示例
Apr 07 PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 PHP
实例讲解PHP中使用命名空间
Jan 27 PHP
Thinkphp5.0框架视图view的模板布局用法分析
Oct 12 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
Dec 29 #PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
Dec 29 #PHP
window+nginx+php环境配置 附配置搭配说明
Dec 29 #PHP
php防攻击代码升级版
Dec 29 #PHP
php 传值赋值与引用赋值的区别
Dec 29 #PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
Dec 29 #PHP
服务器web工具 php环境下
Dec 29 #PHP
You might like
php xml文件操作实现代码(二)
2009/03/20 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
2015/05/13 PHP
PHP入门教程之PHP操作MySQL的方法分析
2016/09/11 PHP
php框架CodeIgniter主从数据库配置方法分析
2018/05/25 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
提高网站信任度的技巧
2008/10/17 Javascript
js切换光标示例代码
2013/10/10 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
JavaScript开发Chrome浏览器扩展程序UI的教程
2016/05/16 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
浅谈react受控组件与非受控组件(小结)
2018/02/09 Javascript
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
python连接mongodb密码认证实例
2018/10/16 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
机电专业个人自荐信格式模板
2013/09/23 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
期中考试后的感想
2015/08/07 职场文书
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis