码迷,mamicode.com
首页 > Web开发 > 详细

php xml 文件读取 XMLReader

时间:2016-12-22 19:14:06      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:des   attribute   ring   getattr   XML   list   while   ade   lower   

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

标签:des   attribute   ring   getattr   XML   list   while   ade   lower   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!