`

simplexml 对xml的增删改操作

    博客分类:
  • PHP
 
阅读更多

 

     搞了几天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 属性id3 的节点

 

3 ,删除节点

删除节点用unset 函数就行,但要删除指定节点比较麻烦,删除指定节点只能使用节点的索引值。

比如删除第二个节点(id2)


$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');
 }

 
 
分享到:
评论
1 楼 liusen329 2015-09-29  
不错不错

相关推荐

    GWT SimpleXML, XML解析

    标题 "GWT SimpleXML, XML解析" 涉及到两个主要技术领域:Google Web Toolkit (GWT) 和 SimpleXML。GWT 是一个用于构建富互联网应用程序(RIA)的开放源代码框架,它允许开发者使用Java语言编写客户端代码,然后...

    SimpleXML解析XML

    SimpleXML是PHP中的一种轻量级的XML处理库,它为开发者提供了方便的方式来解析和操作XML文档。在PHP中,SimpleXML是默认安装的一部分,因此无需额外安装扩展即可使用。这个库的核心特性在于其易用性和灵活性,使得...

    Android开发-Retrofit-AndroidStudio(四)simplexml解析XML_免积分

    在本教程中,我们将深入探讨如何在Android Studio项目中使用Retrofit与simplexml库一起解析XML数据。简单XML库(Simple XML)是Java中一个轻量级、高效的XML序列化和反序列化库,非常适合处理XML格式的数据。 首先...

    php下使用SimpleXML处理XML文件.pdf

    SimpleXML库提供了一种简单易用的方式来解析和操作XML文档。下面我们将详细讨论如何使用SimpleXML来处理XML文件。 1. **SimpleXML简介** SimpleXML是PHP 5引入的一个轻量级库,用于处理XML数据。它通过将XML文档...

    delphi解析xml-simplexml

    为了处理XML文档,Delphi提供了一个名为SimpleXML的库,它是一个轻量级且易于使用的XML解析器。本篇文章将深入探讨如何在Delphi中使用SimpleXML来解析XML文件。 首先,我们需要了解XML的基本结构。XML文档由元素、...

    SimpleXML,SimpleXML示例

    总的来说,SimpleXML是PHP中解析XML文档的理想选择,它简化了XML操作,让开发人员可以更专注于业务逻辑而不是底层的数据处理。通过熟悉SimpleXML的基本用法和特性,你可以更高效地处理XML数据,无论是读取还是写入...

    php对xml文件增删改查,对xml数据进行分页

    下面将详细介绍如何使用`SimpleXMLElement`实现这些功能,以及如何对XML数据进行正序、倒序查询和分页。 首先,`SimpleXMLElement`类允许我们轻松地解析XML文档并将其转换为PHP对象。例如,加载一个名为"111.xml"的...

    PHP DOM扩展库:SimpleXML 解析XML文档.md

    ### PHP DOM扩展库: SimpleXML 解析XML文档 #### DOM基本概念 - **定义与功能**:DOM(Document Object Model)是一种编程接口,允许开发者通过脚本语言(如JavaScript)来动态地访问和更新文档(如HTML或XML)的...

    SimpleXML

    SimpleXML是PHP编程中的一种简单XML解析库,它允许开发者以对象化的方式处理XML文档,大大简化了XML数据的读取和写入操作。在PHP中,SimpleXML是内置的,无需额外安装即可使用,这使得它成为PHP开发者的首选XML处理...

    Codeigniter通过SimpleXML将xml转换成对象的方法

    在Codeigniter框架中,利用SimpleXML处理XML数据,通常需要以下几个步骤: 1. 引入SimpleXML扩展:在PHP代码中,首先需要确保SimpleXML扩展已经被加载和启用。这是使用SimpleXML功能的前提条件。 2. 准备XML数据:...

    PHP对XML的解析

    通过创建SimpleXML对象,可以轻松实现对XML数据的读取和修改。 ##### 创建SimpleXML对象 SimpleXML对象是处理XML数据的关键,它充当了XML数据的容器。有两种方法可以创建SimpleXML对象: 1. 使用`simplexml_load_...

    simplexml

    总结起来,"simplexml" 关注的是简化XML处理,而涉及的领域包括XML解析、DOM操作、SQL查询以及可能的C++ XML库的使用。学习这些知识点可以帮助我们高效地处理XML数据,实现数据的存储、检索和转换,并在数据库管理中...

    php操作xml实例代码

    在PHP中,XML(eXtensible ...了解了这些基本概念后,我们可以编写处理XML的PHP代码,实现XML数据的增删改查功能。对于给定的压缩包文件,可以通过阅读和分析这些PHP文件的源代码,进一步了解PHP操作XML的实际应用。

    PHP操作XML详解.doc

    【PHP操作XML详解】 XML(eXtensible Markup Language...SimpleXML是入门XML操作的良好起点,但对于更复杂的需求,可以进一步学习DOM或其他XML扩展。理解XML和PHP之间的交互是提升Web应用程序功能和灵活性的关键步骤。

    converter-simplexml-2.1.0

    "converter-simplexml-2.1.0.jar"则是Retrofit2的一个扩展,它集成了SimpleXML库,使得Retrofit2可以理解并处理XML格式的响应。通过添加这个转换器,开发者无需手动解析XML,而是可以直接将XML响应映射到自定义的...

    SimpleXML_objects_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

    PHP操作XML实例

    1. DOM (Document Object Model):DOM 提供了一种树型结构来表示XML文档,允许开发者通过节点操作来遍历和修改XML。例如,使用`DOMDocument`和`DOMXPath`类: ```php $xml = &lt;&lt;&lt;XML &lt;title&gt;PHP与MySQL web开发 ...

    PHP实现对xml的增删改查操作案例分析

    它提供了一系列方法来对XML文件进行增删改查操作。 2. DOMElement类:表示XML文档中的一个元素。通过DOMElement,我们可以创建新元素、修改或删除现有元素。 3. XPath:是一种查询语言,用于在XML文档中查找信息。...

    SimpleXML代码

    2. **对象模型**:SimpleXML控件可能提供了一套面向对象的API,包括类如TXMLDocument、TXMLElement等,这些类对应XML文档的不同部分,如根节点、子节点、属性等,通过这些对象,开发者可以方便地操作XML数据。...

Global site tag (gtag.js) - Google Analytics