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 相关文章推荐
全文搜索和替换
Oct 09 PHP
php下实现一个阿拉伯数字转中文数字的函数
Jul 10 PHP
PHP中通过语义URL防止网站被攻击的方法分享
Sep 08 PHP
PHP中mysql_field_type()函数用法
Nov 24 PHP
php使用COPY函数更新配置文件的方法
Jun 18 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
php通过执行CutyCapt命令实现网页截图的方法
Sep 30 PHP
简单谈谈PHP中的trait
Feb 25 PHP
PHP中递归的实现实例详解
Nov 14 PHP
PHP优化之批量操作MySQL实例分析
Apr 23 PHP
THINKPHP5分页数据对象处理过程解析
Oct 28 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获取YouTube视频信息的方法
2015/02/11 PHP
基于php编程规范(详解)
2017/08/17 PHP
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
setAttribute 与 class冲突解决
2008/02/17 Javascript
JS之小练习代码
2008/10/12 Javascript
JSON字符串和对象相互转换实例分析
2016/06/16 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
浅析Vue中method与computed的区别
2018/03/06 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
Vue项目结合Vue-layer实现弹框式编辑功能(实例代码)
2020/03/11 Javascript
Python常见工厂函数用法示例
2018/03/21 Python
详解python调用cmd命令三种方法
2019/07/08 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
用纯css3实现的图片放大镜特效效果非常不错
2014/09/02 HTML / CSS
全球最大的在线橄榄球商店:Lovell Rugby
2018/05/20 全球购物
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
马来西亚最大的在线隐形眼镜商店:MrLens
2019/03/27 全球购物
英文留学推荐信范文
2014/01/25 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
亮化工程实施方案
2014/03/17 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
银行先进个人事迹材料
2014/05/11 职场文书
开展读书活动总结
2014/06/30 职场文书
小学生植树节活动总结
2014/07/04 职场文书
企业趣味活动方案
2014/08/21 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
实习单位意见
2015/06/04 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
Springboot如何同时装配两个相同类型数据库
2021/11/17 Java/Android
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android