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连接mssql的一些相关经验及注意事项
Feb 05 PHP
zf框架的session会话周期及次数限制使用示例
Mar 13 PHP
ThinkPHP字符串函数及常用函数汇总
Jul 18 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
Centos6.5和Centos7 php环境搭建方法
May 27 PHP
php版银联支付接口开发简明教程
Oct 14 PHP
php使用Jpgraph创建折线图效果示例
Feb 15 PHP
Symfony2针对输入时间进行查询的方法分析
Jun 28 PHP
PHP+Ajax实现的博客文章添加类别功能示例
Mar 29 PHP
Laravel中正确地返回HTTP状态码方法示例
Sep 10 PHP
解决laravel5.4下的group by报错的问题
Oct 16 PHP
PHP使用Http Post请求发送Json对象数据代码解析
Jul 16 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二维数组的去重问题解析
2011/07/17 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
PHP简单实现无限级分类的方法
2016/05/13 PHP
Prototype Function对象 学习
2009/07/12 Javascript
Prototype源码浅析 Enumerable部分之each方法
2012/01/16 Javascript
JavaScript 代码压缩工具小结
2012/02/27 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
Javascript实现base64的加密解密方法示例
2017/06/27 Javascript
深入理解node.js http模块
2018/01/24 Javascript
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
vue 集成jTopo 处理方法
2019/08/07 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
vue+iview使用树形控件的具体使用
2020/11/02 Javascript
python修改操作系统时间的方法
2015/05/18 Python
python if not in 多条件判断代码
2016/09/21 Python
Python实现的质因式分解算法示例
2018/05/03 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
Django时区详解
2019/07/24 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
聊聊python中的循环遍历
2020/09/07 Python
365 Tickets英国:全球景点门票
2019/07/06 全球购物
广场舞大赛策划方案
2014/05/31 职场文书
工作失职检讨书范文
2015/05/05 职场文书
黄河绝恋观后感
2015/06/08 职场文书
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
nginx.conf配置文件结构小结
2022/04/08 Servers