欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

PHP操作XML文件学习笔记

程序员文章站 2024-02-09 09:02:40
...

对于XML的操作包括遍历,生成,修改,删除等其他类似的操作。PHP对于XML的操作方式很多,这次学习的是通过DOMDocument进行操作,其他的操作方法可以参考 http://www.oschina.net/code/snippet_110138_4727 1.对XML文件的遍历 通过DOMDocument对于XML文件的操

  对于XML的操作包括遍历,生成,修改,删除等其他类似的操作。PHP对于XML的操作方式很多,这次学习的是通过DOMDocument进行操作,其他的操作方法可以参考

  http://www.oschina.net/code/snippet_110138_4727

  1.对XML文件的遍历

    通过DOMDocument对于XML文件的操作的方法:首先要实例化一个DOMDocument类的对象,然后引入要操作的XML文件。即:

1 $doc = new DOMDocument();
2 $doc->load("test.xml");

xml version="1.0" encoding="utf-8" ?>
school>
    student>
        name>张三name>
        sex>sex>
        age>19age>
    student>
    student>
        name>李四name>
        sex>sex>
        age>18age>
    student>
    student>
        name>王五name>
        sex>sex>
        age>19age>
    student>
school>

1 $content = $doc->getElementsByTagName("student");
2 foreach($content as $value){
3     echo $value->nodeValue."
"; 4 }

  注意:在遍历XML文件的时候,要注意的一个问题就是编码的问题,如果xml文件的encoding为"utf-8",那么xml文件的文件编码也必须是utf-8,可以通过文本编辑器将文件另存为和xml的encoding相同的文件编码即可。否则在遍历的时候会报错或者出现乱码。

  2.生成XML文件

    在生成XML文件的时候,是通过DOMDocument类中的方法来创建各个节点和节点内容的。我通过查询数据库,并将数据库中的信息生成XML文件方法如下:

 1 include "database.php";       //导入连接数据库文件
 2 $query = mysql_query("SELECT * FROM test");
 3 
 4 //操作xml准备
 5 $doc = new DOMDocument("1.0","utf-8");
 6 
 7 //通过createElement方法为xml文件创建节点
 8 //创建根节点
 9 $school= $doc->createElement("school");
10 //11 //将根节点添加到xml文件中
12 $doc->appendChild($school);
13 
14 //创建student节点
15 $student= $doc->createElement("student");
16 //将student节点添加到school节点下
17 $school->appendChild($student);
18 
19 $nameinfo = array();    //
20 $sexinfo = array();       //
21 $ageinfo = array();       //
22 $idinfo = array();         //对应xml文件中属性id的值
23 $i = 0;                        //控制变量i
24 
25 while($row=mysql_fetch_array($query)){
26     //27    //查询数据库信息并赋值给相应的数组
28     $nameinfo[$i] = $doc->createTextNode($row["name"]);
29     $sexinfo[$i] = $doc->createTextNode($row["sex"]);
30     $ageinfo[$i] = $doc->createTextNode($row["age"]);
31     $idinfo[$i] = $doc->createTextNode($i);
32     $i++;
33 }
34 
35 for($i=0;$icount