本文章来给大家介绍在php中生成和获取xml格式数据代码,生成xml我们使用domdocument,读取xml我们使用xmlreader即可,下面我分别给大家介绍.
生成xml格式数据
我们假设系统中有一张学生信息表student,需要提供给第三方调用,并有id,name,sex,age分别记录学生的姓名、性别、年龄等信息.数据库sql代码如下:
create table `student` ( `id` int(11) not null auto_increment, `name` varchar(50) not null, `sex` varchar(10) not null, `age` smallint(3) not null default '0', primary key (`id`) ) engine=myisam default charset=utf8;
首先,建立createxml.php文件,先连接数据库,获取数据,代码如下:
include_once (connect.php); //连接数据库 $sql = select * from student; $result = mysql_query($sql) or die(invalid query: . mysql_error()); while ($row = mysql_fetch_array($result)) { $arr[] = array( 'name' => $row['name'], 'sex' => $row['sex'], 'age' => $row['age'] ); //开源代码phprm.com }
这个时候,数据就保存在$arr中,你可以使用print_r打印下数据测试,接着,建立xml,循环数组,将数据写入到xml对应的节点中,代码如下:
$doc = new domdocument('1.0', 'utf-8'); // 声明版本和编码 $doc->formatoutput = true; $r = $doc->createelement(root); $doc->appendchild($r); foreach ($arr as $dat) { $b = $doc->createelement(data); $name = $doc->createelement(name); $name->appendchild($doc->createtextnode($dat['name'])); $b->appendchild($name); $sex = $doc->createelement(sex); $sex->appendchild($doc->createtextnode($dat['sex'])); $b->appendchild($sex); $age = $doc->createelement(age); $age->appendchild($doc->createtextnode($dat['age'])); $b->appendchild($age); $r->appendchild($b); } echo $doc->savexml();
我们调用了php内置的类domdocument来处理与生成xml,最终生成的xml格式,代码如下:
open($url); //获取xml $i=1; while ($reader->read()) { if ($reader->nodetype == xmlreader::text) { //判断node类型 $m = $i%3; if($m==1) $name = $reader->value; //读取node值 if($m==2) $sex = $reader->value; if($m==0){ $age = $reader->value; $arr[] = array( 'name' => $name, 'sex' => $sex, 'age' => $age ); } $i++; } } //print_r($arr);
为了将数据name,sex和age分开,我们使用$i%3来判断取模,因为在获取的xml中,节点data下的信息是以3个子节点存在的.
文章地址:
转载随意^^请带上本文地址!