PHP对XML文件操作
来源:互联网 发布:欧洲旅游攻略知乎 编辑:程序博客网 时间:2024/04/27 15:12
/** * 新建b级元素,其中b元素中包含三个c级元素 * * @param unknown $c1 * @param unknown $c2 * @param unknown $c3 * @return boolean */function writeNewB($c1, $c2, $c3){ // 这里是DOMDocument读取xml $dom = new DOMDocument ( '1.0' ); $dom->load ( 'a.xml' ); // 最外层元素 $a = $dom->getElementsByTagName ( 'a' ); // 第一层的元素数组,即a[0] $a = $a->item ( 0 ); // 新建一个元素,名为b $_b = $dom->createElement ( 'b' ); // 往a[0]写入b $a->appendChild ( $_b ); // 新建一个元素,名为c1 $_c1 = $dom->createElement ( 'c1' ); // 往b[0]写入c1 $_b->appendChild ( $_c1 ); // 新建一个文本节点 $_text = $dom->createTextNode ( $c1 ); // 往c1写入文本节点 $_c1->appendChild ( $_text ); // 同上步骤,添加三个c级元素 // c2 $_c2 = $dom->createElement ( 'c2' ); $_b->appendChild ( $_c2 ); $_text = $dom->createTextNode ( $c2 ); $_c2->appendChild ( $_text ); // c3 $_c3 = $dom->createElement ( 'c3' ); $_b->appendChild ( $_c3 ); $_text = $dom->createTextNode ( $c3 ); $_c3->appendChild ( $_text ); // 保存xml $dom->save ( 'a.xml' ); return true;}/** * 通过c1的值遍历得b元素数组 * * @param unknown $c1 * @return b元素数组:unknown */function getBByC1($c1){ // 这里是simplexml_load_file读取xml $xml = simplexml_load_file ( 'a.xml' ); $r_arr_b = array (); // load后,xml为a元素数组 // xml->b为,b元素数组 foreach ( $xml->b as $b ) { // 假如我们要b元素的c1大于基准 if ($c1 < $b->c1) { $r_arr_b [] = $b; } } return $r_arr_b;}/** * 通过c2来遍历删除b元素,这里只删除前面一个,逻辑看需求 * * @param unknown $c2 * @return boolean */function deleteBByC2($c2){ // 这里是DOMDocument读取xml $dom = new DOMDocument ( '1.0' ); $dom->load ( 'a.xml' ); // 返回最外层关于'a'节点数 $_a = $dom->getElementsByTagName ( 'a' ); // 第一层的对象数组的第一个对象信息,即a[0] $_a = $_a->item ( 0 ); // 下面是往xml删除节点 // 返回第二层关于'b'节点数 $_b = $_a->getElementsByTagName ( 'b' ); // 地二层对象数组,即b[] foreach ( $_b as $b ) { $_c2 = $b->getElementsByTagName ( 'c2' ); // 第三层对象数组,即id[] foreach ( $_c2 as $c ) { if ($c2 == $c->nodeValue) { // parentNode为夫节点,即b[X] $parentNode = $c->parentNode; // 从最外层的a移除b[x]节点 $_a->removeChild ( $parentNode ); // 保存xml $dom->save ( 'a.xml' ); return true; } } } return false;}/** * 通过c2修改b元素的c3元素 */function updateC3ByC2($c2, $c3){ // 这里是simplexml_load_file读取xml $xml = simplexml_load_file ( 'a.xml' ); foreach ( $xml->b as $b ) { if ($c2 == $b->c2) { $b->c3 = $c3; } } // 标准化 XML数据 $newxml = $xml->asXML (); // 打开要写入 XML数据的文件 $fp = fopen ( 'a.xml', 'w' ); // 对文件操作加执行锁 flock ( $fp, LOCK_EX ); // 写入 XML数据 fwrite ( $fp, $newxml ); // 对文件操作加共享锁 flock ( $fp, LOCK_UN ); // 关闭文件 fclose ( $fp ); return true;}//测试功能writeNewB ( 'q', 'w1', 'e1' );writeNewB ( 'q', 'w2', 'e2' );writeNewB ( 'q', 'w3', 'e3' );writeNewB ( 'q', 'w4', 'e4' );deleteBByC2 ( 'w3' );updateC3ByC2 ( 'w2', 'ee2' );
最后的a.xml文件如下
<?xml version="1.0" encoding="UTF-8"?><a> <b> <c1>q</c1> <c2>w1</c2> <c3>e1</c3> </b> <b> <c1>q</c1> <c2>w2</c2> <c3>ee2</c3> </b> <b> <c1>q</c1> <c2>w4</c2> <c3>e4</c3> </b></a>
0 0
- PHP对XML文件操作
- php对xml文件的操作
- php技术对xml文件进行操作
- php xml文件操作
- PHP操作XML文件
- php操作xml文件
- php对文件操作
- PHP对XML的操作
- 对 Xml 文件的操作
- XPath 对xml文件操作
- VC++对XML文件操作
- 对XMl文件的操作
- xml学习笔记②PHP DOM--对xml文件进行解析操作
- xml学习笔记②PHP DOM--对xml文件进行更新操作
- xml学习笔记③PHP DOM--对xml文件进行修改和删除操作
- php对文件的操作
- php对文件的操作
- php对文件的操作
- PUT 还是 POST ?
- Process 创建+控制+分析 经验浅谈(3)
- 当习惯成为自然
- Unable to recreate missing debug keystore.
- jquery autocomplete 搜索框提示 输入自动补全
- PHP对XML文件操作
- 第8周-项目5-方程也是类
- 大小端问题:参考Unix书
- 利用maven-assembly-plugin进行自定义格式打包
- maven环境快速搭建
- vim编辑器设置制表符为四空格
- Qt简介以及如何配置Qt使用VS2010进行开发
- 百度蜘蛛 禁止访问
- 解决chrome卡死假死