<?php
/**
*测试用的数据库
*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 AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
*
*INSERT INTO `student` VALUES ('1', '张三', '男', '18');
*INSERT INTO `student` VALUES ('2', '李四', '男', '17');
*INSERT INTO `student` VALUES ('3', '王五', '女', '18');
*INSERT INTO `student` VALUES ('4', '赵六', '女', '16');
*/
header("Content-type: text/html; charset=utf-8");
$dbh = new PDO('mysql:dbname=test;host=localhost', 'root', '123456');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = "SELECT * FROM student";
try {
//执行SELECT查询,并返回PDOstatement对象
$dbh->query('set names utf8'); //设置字符集
$pdostatement = $dbh->query($query);
echo "一共从表中获取到".$pdostatement->rowCount()."条记录:\n<br>";
$arr = array();
foreach ($pdostatement as $row) { //从PDOstatement对象中遍历结果
$arr[] = array(
'name' => $row['name'],
'sex' => $row['sex'],
'age' => $row['age']
);
}
$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);
}
file_put_contents('test.xml',$doc->saveXML()); //写到test.xml文件里
//获取xml的结点数据,用XMLReader读取数据
$i=1;
$url = "test.xml";
$reader = new XMLReader(); //实例化XMLReader
$reader->open($url); //获取xml
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;
$arr2[] = array(
'name' => $name,
'sex' => $sex,
'age' => $age
);
}
$i++;
}
}
print_r($arr2);
} catch (PDOException $e) {
echo $e->getMessage();
}
?> |