php中操作xml文档程序代码
/*
孙悟空名字> 孙行者名字> 猴精猴精年龄> 介绍> 学生> 白骨精名字> 140年龄> 幻化万千介绍> 学生> 猪八戒名字> 猪无能名字> 200年龄> 能吃会睡介绍> 学生> 班级>
*/
version = $version; $this->encoding = $encoding; $this->xml = new DOMDocument($version, $encoding); if($xmlFile)$this->xml->load($xmlFile); } function getRootEle($rootTag){ $this->xmlRoot = $this->xml->getElementsByTagName($rootTag)->item(0); } function getSeachItem($itemsTag, $seachNode, $seachValue){ $this->items = $this->xml->getElementsByTagName($itemsTag); $this->items->length; for($i=0; $iitems->length; $i++){ $item = $this->items->item($i);//元素 $node = $item->getElementsByTagName($seachNode);//节点 for($j = 0; $jlength; $j++){ $subNode = $node->item($j); if($seachValue == $subNode->nodeValue){ $this->seachNode = $subNode; $this->seachItem = $item; $this->seachValue = $subNode->nodeValue; break(2); } } } return ($this->seachNode) ? true : false; } function update($nodeValue, $nodeTag = '',$append = false, $index = 0){ if($append){ if($nodeTag) $this->seachItem->getElementsByTagName($nodeTag)->item($index)->nodeValue += $nodeValue; else $this->seachNode->nodeValue += $nodeValue; }else{ if($nodeTag) $this->seachItem->getElementsByTagName($nodeTag)->item($index)->nodeValue = $nodeValue; else $this->seachNode->nodeValue = $nodeValue; } } function save($filename){ $this->writeBytes = $this->xml->save($filename); return ($this->writeBytes) ? true : false; } } $test = new xmlDom('student.xml'); $test->getSeachItem('学生','年龄','103');//找到 年龄=103 的猪八戒 $test->update('小猪猪', '名字', false, 1); //把猪八戒的第二个名字改成:小猪猪 $test->save('new.xml'); //保存成新文件 ?>
上面是使用了dom来操作,下面我们利用php中的SimpleXML来操作xml,也算是很标准的一个操作xml文档的类了.
simplexml_load_file(string filename)
这里的 filename变量是用于存储 XML数据文件的文件名及其所在路径,以下代码使用 simplexml_load_file函数来创建了一个 SimpleXML对象,代码如下:
其中,example.xml存储的数据与上面的$data完全相同,运行结果也与上面完全相同.
上面两种方法实现了同样的功能,其区别就在于 XML的数据源不同,如果 XML的数据源在 PHP脚本文件中,则需要使用 simplexml_load_string来进行创建,如果 XML的数据源在一个单独的 XML文件中,则需要使用 simplexml_load_file来进行创建.
读取 XML数据中的标签
与操作数组类型的变量类似,读取 XML也可以通过类似的方法来完成,例如,如果需要读取上面 XML数据中每一个"depart"标签下的"name"属性,可以通过使用 foreach函数来完成,如以下代码所示.
depart as $a) { echo "$a->name
"; } //运行结果如下所示。 //production support //testing center ?>
读取 XML文件,循环读取 XML数据中的每一个 depart标签,输出其中的 name属性,也可以使用方括号"[]"来直接读取 XML数据中指定的标签,以下代码输出了上面 XML数据中的第一个"depart"标签的"name"属性,代码如下:
depart->name[0]; //输出节点 //运行结果如下所示。 //production support ?>
对于一个标签下的所有子标签,SimpleXML组件提供了 children方法进行读取,例如,对于上面的 XML数据中的"depart"标签,其下包括两个子标签:"name"和"employees",以下代码实现了对第一个"depart"标签下的子标签的读取.
文章链接:
随便收藏,请保留本文地址!
推荐阅读
-
PHP程序循环迭代中谨慎操作数据库
-
php中mysql连接和基本操作代码(快速测试使用,简单方便)_PHP
-
PHP中=赋值操作符对不同数据类型的不同行为
-
php中目录,文件操作详谈_PHP教程
-
DOM基础及php读取xml内容操作的方法,domxml_PHP教程
-
SQL Server Table中XML列的操作代码
-
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
-
PHP中GD库的官方站文档中有显示ImageGifAnimBegin这个函数,为什么小弟我用在PHP中会提示undefined function
-
php中无限级分类程序代码_PHP教程
-
php中实现xml与mysql数据相互转换的方法_php技巧