php类:XML文件分析类

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) : '';  

        // 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
	* 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/PHP/
    * @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);  

    }  

}  

?>

Demo:

<?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\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 '</pre>';
?>

PHP XML预定义常量: http://www.php.net/manual/en/libxml.constants.php

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索object
, return
, function
, data
, flag
xmlstring
,以便于您获取更多的相关知识。

时间: 2024-08-22 15:13:10

php类:XML文件分析类的相关文章

php的XML文件解释类应用实例

 XMLParser.class.php类文件如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 7

php的XML文件解释类应用实例_php技巧

本文实例讲述了php的XML文件解释类及其用法,是非常实用的技巧.分享给大家供大家参考.具体如下: XMLParser.class.php类文件如下: <?php /** XML 文件分析类 * Date: 2013-02-01 * Author: fdipzone * Ver: 1.0 * * func: * loadXmlFile($xmlfile) 读入xml文件输出Array * loadXmlString($xmlstring) 读入xmlstring 输出Array */ class

C#读取XML文件——自定义类

C#本身也带有读取XML文件的类,但是许久未曾接触C#了,为了练练手,自己写了一个具有简单功能的类,实现了读取xml文件,查找元素,插入结点等功能.实现如下: XmlDoc类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ConsoleCSharp { class XmlDoc { internal static st

C#对XML操作:一个处理XML文件的类(2)

xml|xml C#操作XML初步(8) 第四章:通用的XML处理方法(2) 上一篇,我们提供了一个类,用来操作XML文件,这里提供一个应用的例子,来源于无聊时候写的一个XML留言本中对留言数据的处理 代码如下: using System;  using System.IO;  using System.Data;  using System.Diagnostics;  using XmlBook.Com.Sem.Tools;   //这里就包含了上一篇提供的类  namespace XmlBo

C#对XML操作:一个处理XML文件的类(1)

C#操作XML初步(7)第四章:通用的XML处理方法(1)既然我们能够使用DATASET来操作XML文件,那真实太方便了,他完全有能力将一个XML文件当作一张表来使用,那又何乐而不为呢?于是我们可以同过这样的一个C#类来操作XML,完成类似数据库般的操作: using System;using System.Text;using System.IO;using System.Xml;using System.Data;namespace XmlBook.Com.Sem.Tools{ /// <s

asp.net c#封装的一个xml文件读取类

A:在XML文件中有多个集,每个集里面包含多个节点. B:可根据集的名字的取出这个集合下面的所有节点值 C:可一次性取出所有的节点值 D:其中有一个是无限拓展的就是:表达式 E:把集合读取到一个模型(实体类)当中 getmxl.cs文件  代码如下 复制代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; namespace XmlOpe

一个比较有用的XML文件操作类 C#代码 可以继续扩展

xml|比较 public class CXml {     private string strXmlFile;      private XmlDocument objXmlDoc = new XmlDocument();      public CXml(string xmlFile)      {          //构造函数          try          {               objXmlDoc.Load(xmlFile);          }       

简单的php读取树型xml文件实现类

XML 函数允许我们解析 XML 文档,但无法对其进行验证. XML 是一种用于标准结构化文档交换的数据格式.您可以在我们的 XML 教程 中找到更多有关 XML 的信息. 该扩展使用 Expat XML 解析器.   <?php教程      function walk_tree ($node, $depth = 0) {           for ($i = 0, $indent = ''; $i < $depth; $i++)                $indent .= '  

数组转换成xml文件php类

<? $elementLevel = 0 ; function array_Xml($array, $keys = '') { global $elementLevel; if(!is_array($array)) { if($keys == ''){ return $array; }else{ return "n<$keys>" . $array . "</$keys>"; } }else{ foreach ($array as $k