搞了几天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解析" 涉及到两个主要技术领域:Google Web Toolkit (GWT) 和 SimpleXML。GWT 是一个用于构建富互联网应用程序(RIA)的开放源代码框架,它允许开发者使用Java语言编写客户端代码,然后...
SimpleXML是PHP中的一种轻量级的XML处理库,它为开发者提供了方便的方式来解析和操作XML文档。在PHP中,SimpleXML是默认安装的一部分,因此无需额外安装扩展即可使用。这个库的核心特性在于其易用性和灵活性,使得...
在本教程中,我们将深入探讨如何在Android Studio项目中使用Retrofit与simplexml库一起解析XML数据。简单XML库(Simple XML)是Java中一个轻量级、高效的XML序列化和反序列化库,非常适合处理XML格式的数据。 首先...
SimpleXML库提供了一种简单易用的方式来解析和操作XML文档。下面我们将详细讨论如何使用SimpleXML来处理XML文件。 1. **SimpleXML简介** SimpleXML是PHP 5引入的一个轻量级库,用于处理XML数据。它通过将XML文档...
为了处理XML文档,Delphi提供了一个名为SimpleXML的库,它是一个轻量级且易于使用的XML解析器。本篇文章将深入探讨如何在Delphi中使用SimpleXML来解析XML文件。 首先,我们需要了解XML的基本结构。XML文档由元素、...
总的来说,SimpleXML是PHP中解析XML文档的理想选择,它简化了XML操作,让开发人员可以更专注于业务逻辑而不是底层的数据处理。通过熟悉SimpleXML的基本用法和特性,你可以更高效地处理XML数据,无论是读取还是写入...
下面将详细介绍如何使用`SimpleXMLElement`实现这些功能,以及如何对XML数据进行正序、倒序查询和分页。 首先,`SimpleXMLElement`类允许我们轻松地解析XML文档并将其转换为PHP对象。例如,加载一个名为"111.xml"的...
### PHP DOM扩展库: SimpleXML 解析XML文档 #### DOM基本概念 - **定义与功能**:DOM(Document Object Model)是一种编程接口,允许开发者通过脚本语言(如JavaScript)来动态地访问和更新文档(如HTML或XML)的...
SimpleXML是PHP编程中的一种简单XML解析库,它允许开发者以对象化的方式处理XML文档,大大简化了XML数据的读取和写入操作。在PHP中,SimpleXML是内置的,无需额外安装即可使用,这使得它成为PHP开发者的首选XML处理...
在Codeigniter框架中,利用SimpleXML处理XML数据,通常需要以下几个步骤: 1. 引入SimpleXML扩展:在PHP代码中,首先需要确保SimpleXML扩展已经被加载和启用。这是使用SimpleXML功能的前提条件。 2. 准备XML数据:...
通过创建SimpleXML对象,可以轻松实现对XML数据的读取和修改。 ##### 创建SimpleXML对象 SimpleXML对象是处理XML数据的关键,它充当了XML数据的容器。有两种方法可以创建SimpleXML对象: 1. 使用`simplexml_load_...
总结起来,"simplexml" 关注的是简化XML处理,而涉及的领域包括XML解析、DOM操作、SQL查询以及可能的C++ XML库的使用。学习这些知识点可以帮助我们高效地处理XML数据,实现数据的存储、检索和转换,并在数据库管理中...
在PHP中,XML(eXtensible ...了解了这些基本概念后,我们可以编写处理XML的PHP代码,实现XML数据的增删改查功能。对于给定的压缩包文件,可以通过阅读和分析这些PHP文件的源代码,进一步了解PHP操作XML的实际应用。
【PHP操作XML详解】 XML(eXtensible Markup Language...SimpleXML是入门XML操作的良好起点,但对于更复杂的需求,可以进一步学习DOM或其他XML扩展。理解XML和PHP之间的交互是提升Web应用程序功能和灵活性的关键步骤。
"converter-simplexml-2.1.0.jar"则是Retrofit2的一个扩展,它集成了SimpleXML库,使得Retrofit2可以理解并处理XML格式的响应。通过添加这个转换器,开发者无需手动解析XML,而是可以直接将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
1. DOM (Document Object Model):DOM 提供了一种树型结构来表示XML文档,允许开发者通过节点操作来遍历和修改XML。例如,使用`DOMDocument`和`DOMXPath`类: ```php $xml = <<<XML <title>PHP与MySQL web开发 ...
它提供了一系列方法来对XML文件进行增删改查操作。 2. DOMElement类:表示XML文档中的一个元素。通过DOMElement,我们可以创建新元素、修改或删除现有元素。 3. XPath:是一种查询语言,用于在XML文档中查找信息。...
2. **对象模型**:SimpleXML控件可能提供了一套面向对象的API,包括类如TXMLDocument、TXMLElement等,这些类对应XML文档的不同部分,如根节点、子节点、属性等,通过这些对象,开发者可以方便地操作XML数据。...