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&amp;mysql(二)
Oct 09 PHP
PHP memcache扩展的三种安装方法
Apr 26 PHP
php处理json时中文问题的解决方法
Apr 12 PHP
php 团购折扣计算公式
Nov 24 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
PHP实现无限级分类(不使用递归)
Oct 22 PHP
详解PHP的Yii框架中扩展的安装与使用
Apr 01 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
Mar 04 PHP
什么是PHP文件?如何打开PHP文件?
Jun 27 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
PHP实现浏览器中直接输出图片的方法示例
Mar 14 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抓即时股票信息
2006/10/09 PHP
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
Jquery 的扩展方法总结
2011/10/01 Javascript
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
JavaScript中的pow()方法使用详解
2015/06/15 Javascript
分享自己用JS做的扫雷小游戏
2016/02/17 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
Node.js中使用jQuery的做法
2016/08/17 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
2017/11/29 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
python解析模块(ConfigParser)使用方法
2013/12/10 Python
详解Python中的Descriptor描述符类
2016/06/14 Python
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
2017/10/15 Python
python交互式图形编程实例(一)
2017/11/17 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
Python hmac模块使用实例解析
2019/12/24 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
房地产销售员的自我评价分享
2013/12/04 职场文书
幼儿园小班家长寄语
2014/04/02 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
水电工程师岗位职责
2015/02/13 职场文书
2015年法院工作总结范文
2015/04/28 职场文书
坚持不是死撑,更重要的是心态
2019/08/19 职场文书
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python