<?php

class xml{
 var $parser;
 var $document;
 var $stack;
 var $data;
 var $last_opened_tag;
 var $isnormal;
 var $attrs=array();
 var $failed=false;
 function __construct($isnormal){
  $this->XMLparse($isnormal);
 }
 function XMLparse($isnormal){
  $this->isnormal=$isnormal;
  $this->parser=xml_parser_create('ISO-8859-1');
  xml_parser_set_option($this->parser,XML_OPTION_CASE_FOLDING,false);
  xml_set_object($this->parser,$this);
  xml_set_element_handler($this->parser,'open','close');
  xml_set_character_data_handler($this->parser,'data');
 }
 function destruct(){
  xml_parser_free($this->parser);
 }
 function parse(&$data){
  $this->document=array();
  $this->stack=array();
  return xml_parse($this->parser,$data,true)&&!$this->failed?$this->document:'';
 }
 function open(&$parser,$tag,$attributes){
  $this->data='';
  $this->failed=false;
  if(!$this->isnormal){
   if(isset($attributes['id'])&&!is_string($this->document[$attributes['id']])){
    $this->document=&$this->document[$attributes['id']];
   }else{
    $this->failed=true;
   }
  }else{
   if(!isset($this->document[$tag])||!is_string($this->document[$tag])){
    $this->document=&$this->document[$tag];
   }else{
    $this->failed=true;
   }
  }
  $this->stack[]=&$this->document;
  $this->last_opened_tag=$tag;
  $this->attrs=$attributes;
 }
 function data(&$parser,$data){
  if($this->last_opened_tag!=null){
   $this->data.=$data;
  }
 }
 function close(&$parser,$tag){
  if($this->last_opened_tag==$tag){
   $this->document=$this->data;
   $this->last_opened_tag=null;
  }
  array_pop($this->stack);
  if($this->stack){
   $this->document=&$this->stack[count($this->stack)-1];
  }
 }
}
?>

xml_class来自 phpcms的更多相关文章

  1. php Zend Opcache,xcache,eAccelerator缓存优化详解及对比

    XCACHE XCache 是一个开源的 opcode 缓存器/优化器, 这意味着他能够提高您服务器上的 PHP 性能. 他通过把编译 PHP 后的数据缓冲到共享内存从而避免重复的编译过程, 能够直接 ...

  2. 使用strace查看C语言级别的php源码

    XCACHE XCache 是一个开源的 opcode 缓存器/优化器, 这意味着他能够提高您服务器上的 PHP 性能. 他通过把编译 PHP 后的数据缓冲到共享内存从而避免重复的编译过程, 能够直接 ...

  3. phpcms V9 内容模型管理

    [1]理解模型 模型,系统知识的抽象表示.既然抽象了,那就得脑补一下.大家都是面向对象设计的专业人员,类就很抽象的,对比类的定义想象一下模型的概念. 举个例子,一般新闻类的信息,都具有标题.内容.作者 ...

  4. phpcms万能字段如何使用php方法

    来自:http://www.tantengvip.com/2013/12/phpcms-php-function/ phpcms后台内容模块->模型管理->添加字段功能很强大,你只需在ph ...

  5. 【转】phpcms授课学习

    来自:http://blog.csdn.net/yanhui_wei/article/category/1220735 <?php 思路: 一.目前在企业中使用比较多的cms内容管理有如下几种: ...

  6. phpcms后台部分修改

    1.后台登陆前提示信息取消及成功后提示信息取消.    (1)后台登陆前提示信息取消               phpcms\modules\admin\classes\admin.class.ph ...

  7. phpcms V9 内容模型管理(转)

    转自:http://www.cnblogs.com/Braveliu/p/5102627.html [1]理解模型 模型,系统知识的抽象表示.既然抽象了,那就得脑补一下.大家都是面向对象设计的专业人员 ...

  8. PHPCMS v9 模型概念及用法

    phpcms v9 模型概念 一.什么是模型? 模型是系统知识的抽象表示.我们不能仅仅通过语言来描述一个系统,也不能仅仅通过记忆来记录关于系统的知识.知识是通过某种媒介来表达的,这种媒介所表达的内容就 ...

  9. 搜查的PHPCMS,织梦DEDECMS 部分对比分析

    对于初学者来说,我想会有相对的了解和认识,自然也有助于今后前端面试的一些小细节!当下学的自然是phpcms phpcms优点: 1. 模块化安装,非常适合安装,拆卸非常方便的. 2. 灵活的标签语法, ...

随机推荐

  1. ipa提取png图片,windows下显示黑色

    原因:ipa提取的png图片经过xcode特殊格式处理,在windows下查看会显示黑色   方法1:通过“ ipin.py文件”转化 过程: 1.安装python,需2.7版本,本文使用2.7.5 ...

  2. [转帖西部数据的Zonefs将会登陆Linux 5.6内核]

    西部数据的Zonefs将会登陆Linux 5.6内核 https://www.cnbeta.com/articles/tech/948875.htm 据说SMR 能够提高25%的存储密度 但是会造成严 ...

  3. Codeforces 1295B - Infinite Prefixes

    题目大意: 给定一个长度为n的字符串s,由字符0和1组成 你可以让这个字符串s无限延长 就令字符串t=sssssss...... 求字符串t有多少个前缀字符串中,0的个数减去1的个数等于x 解题思路: ...

  4. CentOS7下MySQL8的二进制基本安装配置

    前言 基于本地Centos7.6虚拟机Mysql8的配置(亲测有效) 一.安装前的准备 1.到官网下载mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz 2.通过Xs ...

  5. Linux系统提示无法获得锁

    这种情况出现主要是因为软件更新或者安装时出现错误. 删除掉两个临时文件即可 sudo rm /var/lib/dpkg/lock sudo rm /var/cache/apt/archive/lock ...

  6. Java线程——线程习题(一)子线程执行10次后,主线程再运行5次,这样交替执行三遍

    题目:子线程执行10次后,主线程再运行5次,这样交替执行三遍 代码如下: package com.itheima.gan; /** * 子线程执行10次后,主线程再运行5次,这样交替执行三遍 * @a ...

  7. liunx 常用操作(自用)

    Centos7解压文件 tar -zxvf 文件名[test.tar.gz] Centos7安装vim yum -y install vim* Centos7安装ifconfig yum instal ...

  8. python学习笔记--数据类型和变量总结

    1.数据类型 字符串 数字 列表 元祖 字典 2.可变不可变划分 可变:列表,字典 不可变:字符串,数字,元祖 举例:字符串,通过id查看字符串变量在内存中的地址.两次存的值不一样,这就说明了内存重新 ...

  9. 从[Greenplum 6.0] 1分钟安装尝鲜开始

    Greenplum目前6版本目前已经迭代了几个小版本了,随着版本的更新,不断的有bug被修复. 打算试用的朋友可以入手了. 作为开年的第一个工作日的第一个帖子,必须从“开天辟地”的6.0开始.以下内容 ...

  10. Matlab高级教程_第二篇:Matlab相见恨晚的模块_01_定时器

    MATLAB的定时器功能(timer函数): 1 从MATLAB6.5版本开始,MATLAB开始支持定时器.相对于传统的pause函数来说,定时器要强大的多,不仅可以等效实现pause的功能,还可以显 ...