搞了几天php
处理xml
文件,终于有点头绪,记录下来分享一下。
simplexml
是php
处理xml
文件的一个方法,另一个是dom
处理,这里只说simplexml
。
目前php
处理xml
用的比较多,比较成熟的还是dom
。但dom
在速度和代码量上还是比较受人诟病的。
simplexml
的有些函数需要比较高版本的php
,建议是php5.2
以上。
一,新建xml
方法1
(普通新建文件):
$fp=fopen('111.xml','w');
$xmlContent='<?xml version="1.0" encoding="utf-8" ?> ';
$xmlContent.='<navlist>';
$xmlContent.='<nav id="1">';
$xmlContent.='<name>我我我</nname> ';
$xmlContent.='<color>#000000</ncolor> ';
$xmlContent.='</nav>';
$xmlContent.='<nav id="2">';
$xmlContent.='<name>你你你</nname> ';
$xmlContent.='<color>#ffffff</ncolor> ';
$xmlContent.='</nav>';
$xmlContent.='<nav id="3">';
$xmlContent.='<nname>他他他</nname> ';
$xmlContent.='<ncolor>#cccccc</ncolor> ';
$xmlContent.='</nav>';
$xmlContent.='</navlist>';
fwrite($fp,$xmlContent);
fclose($fp);
方法2
(使用simplexml
新建):
$fp=fopen(111.xml','w');
$xmlContent='<?xml version="1.0" encoding="utf-8" ?><navlist></navlist>';
fwrite($fp,$xmlContent);
fclose($fp);
$xml=simplexml_load_file('111.xml');
$app=$xml->addChild('nav');
$app->addAttribute('id',"1");
$app->addChild('name','我我我');
$app->addChild('color','#000000');
$app=$xml->addChild('nav');
$app->addAttribute('id',"2");
$app->addChild('name','你你你');
$app->addChild('color','#ffffff);
$app=$xml->addChild('nav');
$app->addAttribute('id',"3");
$app->addChild('name','他他他');
$app->addChild('color','#cccccc);
$xml->asXML('111.xml');
可以看到第一种方法其实只是普通的写入文件,第二种方法才是使用simplexml
新建xml
文件,但为什么我要把第一种普通方法放前面呢?因为本人测试了一下两种方法的运行时间,发现第一种方法使用的时间更少,所以建议使用普通的新建文件方法新建xml
文件就行了!
新建的文件结构如下:
<?xml version="1.0" encoding="utf-8"?>
<navlist>
<nav id="1">
<name>我我我</nname>
<color>#000000</ncolor>
</nav>
<nav id="2">
<name>你你你</nname>
<color>#ffffff</ncolor>
</nav>
<nav id="3">
<name>他他他</nname>
<color>#cccccc</ncolor>
</nav>
</navlist>
二,读取xml
if($xml=simplexml_load_file('111.xml')){
foreach($xml->nav as $list){
$value[]=get_object_vars($list);
}
}else{
echo('load xml error!');
}
get_object_vars
函数是把对象转化为数组,这样$value
就是一个Php
的普通数组了,大家可以print_r
一下这个数组,Php
数组的读取就不用我说了吧。
三,修改xml
1
,新建节点
$xml=simplexml_load_file('111.xml');
$app=$xml->addChild('nav');
$app->addAttribute('id',"4");
$app->addChild('name','它它它');
$app->addChild('color','#000000');
$xml->asXML(111.xml');
将追加作为最后一个节点
2
,修改节点
$xml=simplexml_load_file('111.xml');
$xg=$xml->xpath("/navlist/nav[@id=‘3’]");
$xg[0]->name="他啊他啊";
$xg[0]->color="#444444";
$xml->asXML(111.xml');
修改了nav
属性id
为3
的节点
3
,删除节点
删除节点用unset
函数就行,但要删除指定节点比较麻烦,删除指定节点只能使用节点的索引值。
比如删除第二个节点(id
为2
的)
:
$xml=simplexml_load_file('111.xml');
unset($xml->nav[1]);
$xml->asXML(111.xml');
索引从0
开始,所以第二个节点的索引是1
。
如果想通过指定的属性删除,则需要循环所有节点获取指定属性的节点索引
如下:
$xml=simplexml_load_file('111.xml');
$i=0;
foreach($xml as $dup){
$sc=$dup->attributes();
if($sc['id']==2){
unset($xml->nav[$i]);
}
$i++;
}
$xml->asXML('111.xml');
四,删除xml
if(file_exists('111.xml')){
unlink('111.xml');
}
|
相关推荐
GWT, SimpleXML, XML解析例子 用一个HTTP请求服务器资源,然后在客户端解析XML内容。
SimpleXML 解析XML
php下使用SimpleXML处理XML文件.pdf
php5自带类simplexml 对xml文件进行增删改查,并对xml数据进行正序倒序查询并分页。希望对小数据网站有所帮助!
delphi解析xml-simplexml
SimpleXML。SimpleXML, 解析xmlxmlxml解析工具SimpleXML
对应博文:http://blog.csdn.net/iwanghang/article/details/53184885
主要介绍了Codeigniter通过SimpleXML将xml转换成对象的方法,涉及Codeigniter操作XML文件的技巧,非常具有实用价值,需要的朋友可以参考下
php利用simplexml对xml进行增删查改
SimpleXML is a library for parsing XML texts and converting them into a hierarchy of XML objects. And vice versa: you can programmatically create a hierarchy of XML-objects
SimpleXML
1 SimpleXML 简介 要处理XML 文件,有...名如其实,SimpleXML 本身小 巧精干,只提供了少量的几个方法函数,但用它处理起XML 文件功能却非常强大,操作也 非常的简单。 首先,它提供有简单的函数可以从XML 文档、字符串
主要介绍了php使用simplexml_load_file加载XML文件并显示XML的方法,实例分析了simplexml_load_file操作XML文件的技巧,非常具有实用价值,需要的朋友可以参考下
主要介绍了PHP中使用SimpleXML检查XML文件结构实例,本文讲解使用SimpleXML来检查一个XML文件是否符合规范的方法,需要的朋友可以参考下
php操作xml,提供以dom、xpath、simpleXML方式操作xml
主要介绍了PHP使用DOM和simplexml读取xml文档的方法,结合实例形式分析了php使用DOM及simplxml针对xml文件的创建、载入、读取等相关操作技巧,需要的朋友可以参考下