操作xml增删改查,操作示例

作者:计算机知识

simplexml 是php 管理xml 文件的一个方法,另八个是dom 管理,这里只说simplexml 。 这两天php 管理xml用的相比多,相比成熟的要么dom 。但dom 在进度和代码量上依然相比较受人诟病的。 simplexml 的有个别函数需求相比较高版本的php,提议是php5.2 以上。

正文实例讲述了PHP达成对xml的增加和删除改查操作。分享给我们供大家参谋,具体如下:

1.首先新建一个xml文件(Root是自家写上的)

本文实例讲述了PHP已毕对xml举行简短的增删改查(CRUD)操作。分享给我们供大家参照他事他说加以考察,具体如下:

一,新建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);  

操作xml增删改查,操作示例。方法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>  

案例:

图片 1

若是有上边xml文件:

二,读取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 数组的读取就不用本身说了吧。

index.php

2.

<?xml version="1.0" encoding="UTF-8"?>
<setting>
  <preferTime>55.8</preferTime>
  <playerValue>56</playerValue>
  <reduceValue>40</reduceValue>
  <reduceTime>339</reduceTime>
</setting>

三,修改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');  
 }  

版权表明:本文为博主原创小说,未经博主允许不得转发。


<?php
header("content-type:text/html;charset=utf-8");
$xmldom = new DOMDocument();
$xmldom->load("demo2.xml");
//查询学生信息
$stus = $xmldom->getElementsByTagName("学生");
for ($i=0;$i<$stus->length;$i  ){
  $stu = $stus->item($i);
  getxmlnode($stu, "姓名");
  getxmlnode($stu, "年龄");
  getxmlnode($stu, "性别");
  getxmlnode($stu, "介绍");
}
function getxmlnode(&$stu,$tagname){
  echo $stuname = $stu->getElementsByTagName($tagname)->item(0)->nodeValue."<br/>";
}
//添加一个学生信息
//addxml($xmldom);
function addxml($xmldom){
  $root = $xmldom->getElementsByTagName("班级")->item(0);
  $ostus = $xmldom->createElement_x_x("学生");
  //添加属性
  $ostus->setAttribute("恋爱状况","热恋中");
  //$ostus->nodeValue="rn";
  $root->a($ostus);
  $ostu_name = $xmldom->createElement_x_x("姓名");
  $ostus->a($ostu_name);
  $ostu_name->nodeValue="小娜";
  $ostu_sex = $xmldom->createElement_x_x("性别");
  $ostus->a($ostu_sex);
  $ostu_sex->nodeValue="女";
  $ostu_age = $xmldom->createElement_x_x("年龄");
  $ostus->a($ostu_age);
  $ostu_age->nodeValue="23";
  $ostu_intro = $xmldom->createElement_x_x("介绍");
  $ostus->a($ostu_intro);
  $ostu_intro->nodeValue="高一美女";
  $xmldom->save("demo2.xml");
}
//删除一个学生信息
//del_element($xmldom);
function del_element($xmldom){
  $dstus = $xmldom->getElementsByTagName("学生");
  $laststu = $dstus->item($dstus->length-1);
  $laststu->parentNode->removeChild($laststu);
}
//修改一个学生信息
//update_element($xmldom);
function update_element($xmldom){
  $ustus = $xmldom->getElementsByTagName("学生");
  $ustu = $ustus->item(0);
  $ustu_age = $ustu->getElementsByTagName("年龄")->item(0);
  $ustu_age->nodeValue =10;
}
//写会到文件中
$xmldom->save("demo2.xml");
?>

图片 2

哪些行使php对它实行CRUD?其实像这种归纳的xml文件使用SimpleXMl再好然而了。你能够像这样来操作它:

demo2.xml

3.直接上代码,更加直观

<?php
//获取数据 get the config data
if(isset($_GET["type"])){
  if($_GET["type"]=="get"){
    $xml=simplexml_load_file("../config.xml");
    $config=array("preferTime"=>$xml->preferTime."",
             "playerValue"=>$xml->playerValue."",
             "reduceValue"=>$xml->reduceValue."",
             "reduceTime"=>$xml->reduceTime."");
    echo json_encode($config);
  }
  //更新数据 update the config data
  if($_GET["type"]=="update"){
    $xml=simplexml_load_file("../config.xml");
    $xml->preferTime=$_GET["data"]["preferTime"];
    $xml->playerValue=$_GET["data"]["playerValue"];
    $xml->reduceValue=$_GET["data"]["reduceValue"];
    $xml->reduceTime=$_GET["data"]["reduceTime"];
    $xml->asXML("../config.xml");
    echo json_encode("save success!");
  }
}
<?xml version="1.0" encoding="UTF-8"?>
<班级>
</班级>

(1)初始化xml

更加多详细情形可参看PHP官方usage examples  和 API description .

PS:这里再为大家提供三款有关xml操作的在线工具供大家仿效使用:

  

PS:这里再为我们提供三款有关xml操作的在线工具供大家参照他事他说加以考察使用:

本文由bwin必赢发布,转载请注明来源

关键词: C# c#操作xml xml增删改查 xml操作