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中路径问题的解决方案
Oct 09 PHP
PHP中的CMS的涵义
Mar 11 PHP
PHP判断远程url是否有效的几种方法小结
Oct 08 PHP
探讨各种PHP字符串函数的总结分析
Jun 05 PHP
php启用zlib压缩文件的配置方法
Jun 12 PHP
使用php伪造referer的方法 利用referer防止图片盗链
Jan 20 PHP
PHP实现图片裁剪、添加水印效果代码
Oct 01 PHP
php读取目录及子目录下所有文件名的方法
Oct 20 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
Jul 09 PHP
Laravel5权限管理方法详解
Jul 26 PHP
深入分析PHP设计模式
Jun 15 PHP
swoole锁的机制代码实例讲解
Mar 04 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
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
php设计模式 Visitor 访问者模式
2011/06/28 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
一张表搞清楚php is_null、empty、isset的区别
2015/07/07 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
jquery indexOf使用方法
2013/08/19 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
9款2014最热门jQuery实用特效推荐
2014/12/07 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
js表单登陆验证示例
2016/10/19 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
react redux入门示例
2018/04/19 Javascript
详解如何webpack使用DllPlugin
2018/09/30 Javascript
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
python编程羊车门问题代码示例
2017/10/25 Python
使用python存储网页上的图片实例
2018/05/22 Python
WxPython实现无边框界面
2019/11/18 Python
python groupby 函数 as_index详解
2019/12/16 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
移动Web—CSS为Retina屏幕替换更高质量的图片
2012/12/24 HTML / CSS
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
Joules官网:女士、男士和儿童服装和鞋类
2018/10/23 全球购物
机械设计制造专业个人求职信
2013/09/25 职场文书
社区禁毒工作方案
2014/06/02 职场文书
学校清明节活动总结
2014/07/04 职场文书
2015年艾滋病防治工作总结
2015/05/22 职场文书
爱国主义影片观后感
2015/06/18 职场文书
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS