ddxiami

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2679|回复: 0

[php函数] 使用PHP生成XML格式数据和读取xml格式数据(XMLReader)

[复制链接]
发表于 2015-10-28 22:53:32 | 显示全部楼层 |阅读模式
<?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();
}


?>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|技术文档库 ( 闽ICP备15017263号-2 )|网站地图

GMT+8, 2025-5-18 22:00 , Processed in 0.054757 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表