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文件上传实例详解!!!
Jan 02 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
Feb 22 PHP
php检索或者复制远程文件的方法
Mar 13 PHP
smarty模板引擎之分配数据类型
Mar 30 PHP
Yii2隐藏frontend/web和backend/web的方法
Dec 12 PHP
PHP结合Mysql数据库实现留言板功能
Mar 04 PHP
php批量删除操作代码分享
Feb 26 PHP
PHP简单实现合并2个数字键数组值的方法
May 30 PHP
CakePHP框架Model关联对象用法分析
Aug 04 PHP
php获取微信共享收货地址的方法
Dec 21 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
PHP实现一个按钮点击上传多个图片操作示例
Jan 23 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
phpinfo 系统查看参数函数代码
2009/06/05 PHP
PHP基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
php 批量生成html,txt文件的实现代码
2013/06/26 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
Jquery 自定义动画概述及示例
2013/03/29 Javascript
微信中一些常用的js方法汇总
2015/03/12 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
基于JS设计12306登录页面
2016/12/28 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
jquery实现自定义图片裁剪功能【推荐】
2017/03/08 Javascript
vue的状态管理模式vuex
2017/11/30 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
vue 监听 Treeselect 选择项的改变操作
2020/08/31 Javascript
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
2019/01/26 Python
如何在Django项目中引入静态文件
2019/07/26 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
耐克美国官网:Nike.com
2016/08/01 全球购物
食堂员工工作职责
2013/12/18 职场文书
社团活动策划书范文
2014/01/09 职场文书
项目合作计划书
2014/01/09 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
创建青年文明号材料
2014/05/09 职场文书
计算机毕业生自荐信
2014/06/12 职场文书
2014坚持党风廉政建设思想汇报
2014/09/18 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
曾国藩励志经典名言37句,蕴含哲理
2019/10/14 职场文书
Win11电源已接通但未充电怎么办?Win11电源已接通未充电的解决方法
2022/04/05 数码科技