PHP操作XML文件学习笔记

原文:PHP操作XML文件学习笔记

  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的遍历是通过获取XML文件中的标签名称,从而获取标签中的内容的,例如XML文件内容为:

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

    现在通过PHP遍历出每个student的信息,通过 getElementsByTagName() 方法获取到指定名称的标签并存为数组,然后遍历信息:

1 $content = $doc->getElementsByTagName("student");
2 foreach($content as $value){
3     echo $value->nodeValue."<br />";
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 //通过appendChild方法将节点或属性添加到指定的标签下
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();    //对应xml文件中name标签下的内容
20 $sexinfo = array();       //对应xml文件中sex标签下的内容
21 $ageinfo = array();       //对应xml文件中age标签下的内容
22 $idinfo = array();         //对应xml文件中属性id的值
23 $i = 0;                        //控制变量i
24
25 while($row=mysql_fetch_array($query)){
26     //通过createTextNode方法为标签节点赋值或者为属性赋值
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;$i<count($nameinfo);$i++){
36     $name = $doc->createElement("name");
37     $sex = $doc->createElement("sex");
38     $age = $doc->createElement("age");
39     //通过createAttribute为节点标签创建属性
40     $id = $doc->createAttribute("id");
41
42     //将name、sex、age标签添加到student标签下,并且为student标签赋属性id
43     $student->appendChild($name);
44     $student->appendChild($sex);
45     $student->appendChild($age);
46     $student->appendChild($id);
47
48     //将从数据库中取出的值添加到对应的标签下
49     $name->appendChild($nameinfo[$i]);
50     $sex->appendChild($sexinfo[$i]);
51     $age->appendChild($ageinfo[$i]);
52     $id->appendChild($idinfo[$i]);
53 }
54
55 //通过save方法将生成的xml文件保存
56 $doc->save("test.xml");

  注意:在生成XML文件的时候同样应该注意编码问题,除了XML文件编码和XML指定编码应当一致以外,在连接数据库的时候还应该注意XML指定的编码应该和数据库的编码一致,另外在生成XML文件的时候应当特别注意各级标签的从属关系。

  3.XML文件的修改和删除

    在对XML文件中的数据进行修改和删除的时候,首先还是应该要将操作的XML引入,方法同遍历时一样。在修改或者删除时通过标签的属性及其值进行定位,方法如下:

 1 $doc= new DOMDocument();
 2 $doc->load("test.xml");
 3
 4 //通过getElementsByTagName方法获取到所有标签为student的标签内容,并存为数组$students
 5 $students = $doc->getElementsByTagName("student");
 6
 7 //遍历$students,将每个student的信息存为$student
 8 foreach($students as $student){
 9     //通过getAttribute获取指定属性的值
10    //将id为2的student标签的name修改为kenticny
11     if($student->getAttribute("id")==2){
12         $content = $doc->getElementsByTagName("name")->item(0)->nodeValue = "Kenticny";
13     }
14     //将id为1的student标签内容删除
15     if($student->getAttribute("id")==1){
16         //通过removeChild方法移除指定的标签内容
17       //在移除标签内容时候要通过被移除标签的父标签进行操作,获取父标签通过parentNode进行获取
18         $student->parentNode->removeChild($student);
19     }
20
21 }
22 //保存修改的XML文件
23 $doc->save("test.xml");

  注意:在对XML进行修改和删除的时候,需要注意的是,修改和删除都是要通过指定标签的属性进行定位操作,然后在删除时候注意应当使用被删除标签的父标签进行删除操作。

  

  以上是我对于PHP通过DOMDocument方法操作XML文件的学习笔记。欢迎转载----转载请注明出处 BY 津志伊恋 2012年4月24日

时间: 2024-12-12 16:20:22

PHP操作XML文件学习笔记的相关文章

使用DOM解析器解析XML文件 学习笔记

dom解析和dom4j原理一致 Node是所有元素的父接口 常用的API: DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();取得DOM解析器工厂 DocumentBuilder domParser = factory.newDocumentBuilder();取得DOM解析器 domParser.parse(*.xml)加载需要解析的XML文件 Document.getDocumentElement()取

利用XmlDocument操作XML文件

利用XmlDocument可以方便的操作XML文件. 1.操作XML文件基本方法 (1)添加对System.Xml的引用,并使用using语句添加引用: (2)假设要读取的XML文件如下: <?xml version="1.0" encoding="utf-8"?> <Students> <Student> <Name>张靓靓</Name> <Age>20</Age> <Hob

XML之学习笔记

参考:http://www.w3school.com.cn/xml/index.asp中的 树结构.语法.元素.属性.验证.命名空间.编码 目的:理解Android开发中的.xml文件是怎样的 XML代码均摘自ADT(Android Development Tools),讲述如有谬误,敬请指正. XML规定:区分大小写.必须有根元素.标签打开了就要关闭 一.元素 开始标签到结束标签的部分,特定类型的一个事物 <.../>不允许有子元素, 即叶节点 <...>...<.../&

Java操作XML文件 dom4j 篇

在项目中,我们很多都用到了xml文件,无论是参数配置还是与其它系统的数据交互.今天就来讲一下Java 中使用dom4j来操作XML文件. 我们需要引入的包: //文件包 import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileWriter; //工具包 import java.util.Iterator; import java.util.List; //dom4j包 import org.dom

.Net常用技巧_操作xml文件教程(插入节点、修改、删除)

已知有一个XML文件(bookstore.xml)如下:     <?xml   version="1.0"   encoding="gb2312"?>     <bookstore>         <book   genre="fantasy"   ISBN="2-3631-4">             <title>Oberon's   Legacy</title&

springbatch操作XML文件

一.需求分析 使用Spring Batch对XML文件进行读写操作: 从一个xml文件中读取商品信息, 经过简单的处理, 写入另外一个xml文件中. 二.代码实现 1. 代码结构图: 2. applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"

JavaScript字符串常用操作函数之学习笔记

字符串简介 使用英文单引号或双引号括起来,如:’Hello’,”World”,但是不能首尾的单引号和双引号必须一致,交错使用,如果要打印单引号或者双引号,可以使用转义字符\’(单引号),\”(双引号)  代码如下 复制代码 var str_1 = 'Hello World!';  //Hello World!var str_2 = "Hello World!";  //Hello World!var str_3 = '他说:"这样可以的."';  //他说:&quo

c#操作XML文件的通用方法

c#操作XML文件的通用方法 本文导读:我们在编写C#程序时,经常会通过C#访问XML文件,实现对XML文档的读写操作.下面为大家列出了通用的调用方法,大家可以将这些方法放在共用类里,其它的程序共享调用就可以了. 下面通过一个类将我们平时用c#操作XML文件的通用方法详细的介绍一下,关于asp.net C#操作xml文档实现代码,大家可以参考参考. c# 代码 1 sing System; 2 using System.Data; 3 using System.Configuration; 4

Asp.Net 操作XML文件的增删改查 利用GridView

不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="XmlManager.index" %> <!