首页 > Web开发 > 详细

php xml 文件读取 XMLReader

时间:2016-12-22 19:13:42      阅读:219      评论:0      收藏:0      [点我收藏+]

php xml 文件读取

<?php
/**
$xmlString = ‘<xml>
        <persons count="10">
            <person username="username1" age="20">this is username1 description</person>
            <person username="username2" age="20">this is username2 description</person>
        </persons>
    </xml>‘;
    
$mXmlTest = new XmlTest();
$dataList = $mXmlTest->parseXmlStr($xmlString);
print_r($dataList);

$xmlFile = ‘./test.xml‘;
$dataList = $mXmlTest->parseXmlFile($xmlFile);
print_r($dataList);

 */


class XmlTest{
        
//     <xml>
//         <persons count="10">
//             <person username="username1" age="20">this is username1 description</person>
//             <person username="username2" age="20">this is username2 description</person>
//         </persons>
//     </xml>
    
    /**
     * 解析返回的XML文档
     */
    public function parseXmlFile($xmlFile){
        $reader = new \XMLReader();
        $reader->open($xmlFile, ‘UTF-8‘);
        $nodeName = ‘‘;
        $dataList = array();
        $data = array();
        while ($reader->read()){
            if($reader->nodeType == \XMLReader::ELEMENT){
                $nodeName = $reader->name;
                if($nodeName==‘persons‘){
                    $count = $reader->getAttribute(‘count‘);
                    if(!($count>0)){
                        break;
                    }
                }
                elseif($nodeName==‘person‘){
                    $data = array(
                        ‘username‘=>$reader->getAttribute(‘username‘),
                        ‘age‘=>$reader->getAttribute(‘age‘),
                    );
                }
            }
            if($reader->nodeType == \XMLReader::TEXT && !empty($nodeName)){
                if($nodeName==‘person‘){
                    $data[‘description‘] = strtolower($reader->value);
                    $dataList[] = $data;
                }
            }
        }
        $reader->close();
        return $dataList;
    }
    
    /**
     * 解析返回的XML文档
     */
    public function parseXmlStr($xmlString){
        $reader = new \XMLReader();
        $reader->xml($xmlString,‘UTF-8‘);
        $nodeName = ‘‘;
        $dataList = array();
        $data = array();
        while ($reader->read()){
            if($reader->nodeType == \XMLReader::ELEMENT){
                $nodeName = $reader->name;
                if($nodeName==‘persons‘){
                    $count = $reader->getAttribute(‘count‘);
                    if(!($count>0)){
                        break;
                    }
                }
                elseif($nodeName==‘person‘){
                    $data = array(
                        ‘username‘=>$reader->getAttribute(‘username‘),
                        ‘age‘=>$reader->getAttribute(‘age‘),
                    );
                }
            }
            if($reader->nodeType == \XMLReader::TEXT && !empty($nodeName)){
                if($nodeName==‘person‘){
                    $data[‘description‘] = strtolower($reader->value);
                    $dataList[] = $data;
                }
            }
        }
        return $dataList;
    }
}

 

php xml 文件读取 XMLReader

原文:http://www.cnblogs.com/xiaoyaogege/p/6212161.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!