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 代码优化的42条建议 推荐
Sep 25 PHP
PHP扩展编写点滴 技巧收集
Mar 09 PHP
php 格式化数字的时候注意数字的范围
Apr 13 PHP
php实现微信公众号主动推送消息
Dec 31 PHP
twig模板获取全局变量的方法
Feb 05 PHP
php实现学生管理系统
Mar 21 PHP
thinkPHP商城公告功能开发问题分析
Dec 01 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 PHP
PHP进阶学习之反射基本概念与用法分析
Jun 18 PHP
Yii框架核心组件类实例详解
Aug 06 PHP
PHP连接SQL server数据库测试脚本运行实例
Aug 24 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中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
浅析PHP文件下载原理
2014/12/25 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
JavaScript 函数式编程的原理
2009/10/16 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
json原理分析及实例介绍
2012/11/29 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
JS实现获取当前URL和来源URL的方法
2016/08/24 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
js实现随机点名小功能
2017/08/17 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
python八大排序算法速度实例对比
2017/12/06 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
详解python解压压缩包的五种方法
2019/07/05 Python
Django实现文件上传和下载功能
2019/10/06 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
如何使用repr调试python程序
2020/02/28 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
2021/01/08 Python
CSS3结构性伪类选择器九种写法
2012/04/18 HTML / CSS
HTML5移动端手机网站开发流程
2016/04/25 HTML / CSS
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
存储过程和函数的区别
2013/05/28 面试题
应届毕业生个人求职自荐信
2014/01/06 职场文书
运动会通讯稿50字
2014/01/30 职场文书