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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
Jan 30 PHP
将一维或多维的数组连接成一个字符串的php代码
Aug 08 PHP
在PHP中利用wsdl创建标准webservice的实现代码
Dec 07 PHP
php流量统计功能的实现代码
Sep 29 PHP
php读取mssql的ntext字段返回值为空的解决方法
Dec 30 PHP
Session 失效的原因汇总及解决丢失办法
Sep 30 PHP
PHP会话控制实例分析
Dec 24 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
Jun 07 PHP
php的常量和变量实例详解
Jun 27 PHP
关于PHP中协程和阻塞的一些理解与思考
Aug 11 PHP
关于php unset对json_encode的影响详解
Nov 14 PHP
微信支付之JSAPI公众号支付详解
May 15 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检查日期函数checkdate用法实例
2015/03/19 PHP
PHP消息队列用法实例分析
2016/02/12 PHP
json 实例详细说明教程
2009/10/31 Javascript
jquery 双色表格实现代码
2009/12/08 Javascript
Extjs显示从数据库取出时间转换JSON后的出现问题
2012/11/20 Javascript
treepanel动态加载数据实现代码
2012/12/15 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
javascript css红色经典选项卡效果实现代码
2016/05/17 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
浅谈vue的踩坑路
2017/08/31 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
2017/12/26 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
Vue通过provide inject实现组件通信
2020/09/03 Javascript
Python入门篇之字符串
2014/10/17 Python
Python使用爬虫猜密码
2016/02/19 Python
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
python随机取list中的元素方法
2018/04/08 Python
flask框架路由常用定义方式总结
2019/07/23 Python
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
职工趣味运动会方案
2014/02/10 职场文书
2014政务公开实施方案
2014/02/19 职场文书
医院保洁服务方案
2014/06/11 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
刑事申诉状范文
2015/05/20 职场文书
百年校庆感言
2015/08/01 职场文书
公司岗位说明书
2015/10/08 职场文书
JS ES6异步解决方案
2021/04/29 Javascript
学会Python数据可视化必须尝试这7个库
2021/06/16 Python
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python