ホームページ  >  記事  >  バックエンド開発  >  php XMLファイル解釈クラスの説明

php XMLファイル解釈クラスの説明

jacklove
jackloveオリジナル
2018-06-11 13:42:021736ブラウズ

XMLParser.class.php

<?php
/** XML 文件分析类
*   Date:   2013-02-01
*   Author: fdipzone
*   Ver:    1.0
*
*   func:
*   loadXmlFile($xmlfile)     读入xml文件输出Array
*   loadXmlString($xmlstring) 读入xmlstring 输出Array
*/
class XMLParser{
    /** 读取xml文件
    * @param  String  $xmlfile
    * @return Array
    */
    public function loadXmlFile($xmlfile){
        // get xmlfile content
        $xmlstring = file_exists($xmlfile)? file_get_contents($xmlfile) : &#39;&#39;;
        // parser xml
        list($flag, $data) = $this->parser($xmlstring);
        return $this->response($flag, $data);
    }
    /** 读取xmlstring
    * @param  String $xmlstring
    * @return Array
    */
    public function loadXmlString($xmlstring){
        // parser xml
        list($flag, $data) = $this->parser($xmlstring);
        return $this->response($flag, $data);
    }
    /** 解释xml内容
    * @param   String $xmlstring
    * @return  Array
    */
    private function parser($xmlstring){
        $flag = false;
        $data = array();
        // check xml format
        if($this->checkXmlFormat($xmlstring)){
            $flag = true;
            
            // xml to object
            $data = simpleXML_load_string($xmlstring, &#39;SimpleXMLElement&#39;, LIBXML_NOCDATA);
            
            // object to array
            $this->objectToArray($data);
        }
        return array($flag, $data);
    }
    /** 检查xml格式是否正确
    * @param  String $xmlstring
    * @return boolean
    */
    private function checkXmlFormat($xmlstring){
        
        if($xmlstring==&#39;&#39;){
            return false;
        }
        $xml_parser_obj = xml_parser_create();
        if(xml_parse_into_struct($xml_parser_obj, $xmlstring, $vals, $indexs)===1){ // 1:success 0:fail
            return true;
        }else{
            return false;
        }
    }
    /** object 转 Array
    * @param  object $object
    * @return Array
    */
    private function objectToArray(&$object){
        
        $object = (array)$object;
        
        foreach($object as $key => $value){
            if($value==&#39;&#39;){
                $object[$key] = "";
            }else{
                if(is_object($value) || is_array($value)){
                    $this->objectToArray($value);
                    $object[$key] = $value;
                }
            }
        }
    
    }
    /** 输出返回
    * @param  boolean $flag true:false
    * @param  Array   $data 转换后的数据
    * @return Array
    */
    private function response($flag=false, $data=array()){
    
        return array($flag, $data);
    
    }
}
?>

デモ:

<?php
require "XMLParser.class.php";
$xmlfile = &#39;file.xml&#39;;
$xmlstring = &#39;<?xml version="1.0" encoding="utf-8"?>
<xmlroot>
<status>1000</status>
<info></info>
<result><id>100</id>
<name>fdipzone</name>
<gender>1</gender>
<age>28</age>
</result>
</xmlroot>&#39;;
echo &#39;<pre class="brush:php;toolbar:false">&#39;;
$xml_parser = new XMLParser();
echo "response xmlfile\r\n";
list($flag, $xmldata) = $xml_parser->loadXmlFile($xmlfile);
if($flag){
print_r($xmldata);
}
echo "response xmlstring\r\n";
list($flag, $xmldata) = $xml_parser->loadXmlString($xmlstring);
if($flag){
print_r($xmldata);
}
echo &#39;
'; ?>

この記事では、php XML ファイル解釈クラスについて説明します。関連コンテンツの詳細については、php 中国語 Web サイトを参照してください。

関連する推奨事項:

php CSS Update Class 関連コンテンツの説明

php __call および __callStatic コンテンツの説明

memcached の一般的なコマンドと使用手順について

以上がphp XMLファイル解釈クラスの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。