PHP5以上提供了一个simpleXML对象来操作XML,把XML的节点转换成对象和数组去操作。
基本思路:将xml字符串转化成对象及数组。
查询
<?php //将xml字符串转化成对象及数组 $xml= file_get_contents('books.xml');//把books.xml中的内容读出来,即获取XML的字符串 $simple=new SimpleXMLElement($xml);//把XML字符串转成数组,$simple代表根节点 //1、查询 echo "<table width='400' border='1'>"; foreach ($simple->book as $book){ $attr=$book->attributes(); echo"<tr>"; echo "<td>".$book->name."</td>"; echo "<td>".$book->price."</td>"; echo "<td>".$attr['type']."</td>";//获取节点的属性 echo "</tr>"; } echo "</table>";
添加
<?php
//将xml字符串转化成对象及数组 $xml= file_get_contents('books.xml');//把books.xml中的内容读出来,即获取XML的字符串 $simple=new SimpleXMLElement($xml);//把XML字符串转成数组,$simple代表根节点 //添加,simplexml目前还没有找到格式化的方法。 $book=$simple->addChild('book');//$simple相当于根节点,即代表books,在根下写book节点 $book->addChild('name','C++'); $book->addChild('price','11'); $book->addAttribute('type','动态语言'); $simple->saveXML('books.xml');//$simple->asXML('books.xml');和$simple->saveXML('books.xml');一样,都是保存的意思
更新
<?php //将xml字符串转化成对象及数组 $xml= file_get_contents('books.xml');//把books.xml中的内容读出来,即获取XML的字符串 $simple=new SimpleXMLElement($xml);//把XML字符串转成数组,$simple代表根节点 foreach ($simple->book as $book){ $book->name.='-北京出版社';//相当于$book->name=$book->name.'-北京出版社'; } $simple->saveXML('books.xml');
删除,从后往前删
<?php //将xml字符串转化成对象及数组 $xml= file_get_contents('books.xml');//把books.xml中的内容读出来,即获取XML的字符串 $simple=new SimpleXMLElement($xml);//把XML字符串转成数组,$simple代表根节点 ($i=count($simple->book)-1;$i>=0;$i--){ $currenbook=$simple->book[$i];//当前图书 $attr=$currenbook->attributes(); if($attr['type']=='动态语言'){ unset($simple->book[$i]);//unset销毁当前变量 } } $simple->saveXML('books.xml');