XML是很通用的数据交换格式,非常的灵
活。在PHP5中内置了一个解析xml的对象
simplexml。本节将简单的介绍一下simplexml的使用方法。
simpleXml是用来解析xml文件的。所以在使用之前需要装载xml对象。
装载simplexml对象需要调用的函数是 simplexml_load_file().典型的代码如下:
$xml = simplexml_load_file($this->fileName);
当对修改了xml文件之后,如何保存?使用simplexml的asXML方法。典型的代码如下:
$xml = simplexml_load_file($this->fileName);//加载这个文件 $xml->line[$num]->chsText= $newValue; //修改 $xml->asXML($this->fileName);//保存
如果读取一个节点的值。先看一个XML文件:
<?xml version="1.0"?> <catalog> <book id="bk101"> <author>ZMAX</author> <title>XML Develop</title> </book> <book id="new add"> <author>min.zhang</author> <title>ZMAX SUPER HH!</title> </book> </catalog>
<?php //构造simpleXMLElement对象 $xml = simplexml_load_file($xmlFilePath); //可以使用属性的方式访问子节点,通过节点的标签名可直接得到节点的内容 foreach ($xml->book as $book) { $author = $book->author; //访问author标签 $title= $book->title; //访问title标签 $id = $book['id'];//访问id属性 echo $author."<br />"; echo $title."<br />"; echo $id."<br />"; } echo "<hr />"; //遍历第一个本书的所有节点 foreach($xml->book->children() as $field) { echo $field."<br />"; } //修改第一本书的名称 $i=1; $xml->book[$i]->title="ZMAX SUPER HH!";//修改title标签的值 $xml->book[1]['id']="new add";//修改id属性的值 $xml->book->publisher="publish"//增加一个pulisher标签 //增加一个book项目,只需要序号的值比现有的项目的序号大就行了。
$xml->book[3]->title="ZMAX SUPER HH!"; $xml->book[3]['id']="new add"; $xml->book[3]->publisher="publish"
//保存 $xml->asXML($xmlFilePath); ?>
上面就是simplexml操作xml的方法。
如何通过simplexml来新建一个xml文件?
一个简单的方法就是先用php的文件函数创建,然后再用simplexml来加载。一段典型的代码如下:
header("content-type:text/html; charset=utf-8"); $fp = fopen($this->fileName ,"w"); fwrite($fp,'<?xml version="1.0" encoding="utf-8"?>'); fwrite($fp,"<lines></lines>"); fclose($fp); $xml = simplexml_load_file($this->fileName);//加载这个文件
注意使用herder可以确保UTF编码。
如果在中文处理中出现乱码,那么可以用iconv进行转换。请注意第二参数后面部分//INGNORE.一段典型的代码如下:
$chsText = iconv( 'utf-8','gbk//IGNORE', $line->chsText);
在下一节中我们将介绍joomla中是如何来操作xml文件的。