zoukankan      html  css  js  c++  java
  • PHP解析xml的方法

    PHP解析xml的方法
    <pre>
    <?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) : '';

    // 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, 'SimpleXMLElement', LIBXML_NOCDATA);

    // object to array
    $this->objectToArray($data);
    }

    return array($flag, $data);

    }


    /** 检查xml格式是否正确
    * @param String $xmlstring
    * @return boolean
    */
    private function checkXmlFormat($xmlstring){

    if($xmlstring==''){
    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==''){
    $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 = 'file.xml';
    $xmlstring = '<?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>';

    echo '<pre>';

    $xml_parser = new XMLParser();
    echo "response xmlfile ";
    list($flag, $xmldata) = $xml_parser->loadXmlFile($xmlfile);
    if($flag){
    print_r($xmldata);
    }

    echo "response xmlstring ";
    list($flag, $xmldata) = $xml_parser->loadXmlString($xmlstring);
    if($flag){
    print_r($xmldata);
    }

    echo '</pre>';
    ?>
    </pre>

  • 相关阅读:
    第十三课:js操作节点的创建
    matlab 绘制条形图
    Pearson(皮尔逊)相关系数及MATLAB实现
    Spearman Rank(斯皮尔曼等级)相关系数及MATLAB实现
    A Regularized Competition Model for Question Diffi culty Estimation in Community Question Answering Services-20160520
    Competition-based User Expertise Score Estimation-20160520
    We Know What @You #Tag: Does the Dual Role Affect Hashtag Adoption-20160520
    matlab 画图数据导入
    Who Says What to Whom on Twitter-www2011-20160512
    The Lifecycle and Cascade of WeChat Social Messaging Groups-www2016-20160512
  • 原文地址:https://www.cnblogs.com/newmiracle/p/11864768.html
Copyright © 2011-2022 走看看