xml_class来自 phpcms
<?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的更多相关文章
- php Zend Opcache,xcache,eAccelerator缓存优化详解及对比
XCACHE XCache 是一个开源的 opcode 缓存器/优化器, 这意味着他能够提高您服务器上的 PHP 性能. 他通过把编译 PHP 后的数据缓冲到共享内存从而避免重复的编译过程, 能够直接 ...
- 使用strace查看C语言级别的php源码
XCACHE XCache 是一个开源的 opcode 缓存器/优化器, 这意味着他能够提高您服务器上的 PHP 性能. 他通过把编译 PHP 后的数据缓冲到共享内存从而避免重复的编译过程, 能够直接 ...
- phpcms V9 内容模型管理
[1]理解模型 模型,系统知识的抽象表示.既然抽象了,那就得脑补一下.大家都是面向对象设计的专业人员,类就很抽象的,对比类的定义想象一下模型的概念. 举个例子,一般新闻类的信息,都具有标题.内容.作者 ...
- phpcms万能字段如何使用php方法
来自:http://www.tantengvip.com/2013/12/phpcms-php-function/ phpcms后台内容模块->模型管理->添加字段功能很强大,你只需在ph ...
- 【转】phpcms授课学习
来自:http://blog.csdn.net/yanhui_wei/article/category/1220735 <?php 思路: 一.目前在企业中使用比较多的cms内容管理有如下几种: ...
- phpcms后台部分修改
1.后台登陆前提示信息取消及成功后提示信息取消. (1)后台登陆前提示信息取消 phpcms\modules\admin\classes\admin.class.ph ...
- phpcms V9 内容模型管理(转)
转自:http://www.cnblogs.com/Braveliu/p/5102627.html [1]理解模型 模型,系统知识的抽象表示.既然抽象了,那就得脑补一下.大家都是面向对象设计的专业人员 ...
- PHPCMS v9 模型概念及用法
phpcms v9 模型概念 一.什么是模型? 模型是系统知识的抽象表示.我们不能仅仅通过语言来描述一个系统,也不能仅仅通过记忆来记录关于系统的知识.知识是通过某种媒介来表达的,这种媒介所表达的内容就 ...
- 搜查的PHPCMS,织梦DEDECMS 部分对比分析
对于初学者来说,我想会有相对的了解和认识,自然也有助于今后前端面试的一些小细节!当下学的自然是phpcms phpcms优点: 1. 模块化安装,非常适合安装,拆卸非常方便的. 2. 灵活的标签语法, ...
随机推荐
- scala快排
笔记积累,直接看代码吧,sublime上运行的 def quickSort(ls:List[Int]):List[Int]={ if (ls.isEmpty) ls else quickSort(ls ...
- Element.shadowRoot
Element.shadowRoot http://www.zhuyuntao.cn/shadow-dom的样式/ Shadow DOM的样式 我们已经可以使用原生的操作DOM的方式和使用模板的方式来 ...
- Dynamics CRM - 如何创建一个新的 Organization
最近需要新建几个 CRM 的场来测试或者开发,也就是要新建 Organization,但是每次我都忘了在哪操作,写篇 blog mark 一下. 首先,新建 Organization 当然是要在 CR ...
- GNU Autotool介绍
参考文档: automake(GNU教程) 几句话说清楚17:用Makefile.am和configure.ac构建一个专业的Hello World Creatingamhello-1.0.tar.g ...
- 下面介绍mysql中模糊查询的四种用法:
下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] ...
- 用Matplotlib画三维图片的一个实例
from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np from matp ...
- 2.Jenkins结合k8s完成Jenkins slave功能
1.构建镜像 下载基础镜像,这里使用openvz的包,下载地址为:https://wiki.openvz.org/Download/template/precreated,下载centos7的镜像 下 ...
- Vue专题-生命周期
有时候,我们需要在实例创建过程中进行一些初始化的工作,以帮助我们完成项目中更复杂更丰富的需求开发,针对这样的需求,Vue提供给我们一系列的钩子函数. 本文详细介绍了Vue实例在创建和销毁的过程中,我们 ...
- Vue专题-组件
vue.js既然是框架,那就不能只是简单的完成数据模板引擎的任务,它还提供了页面布局的功能.本文详细介绍使用vue.js进行页面布局的强大工具,vue.js组件系统. Vue.js组件系统 每一个新技 ...
- java内存区域与内存溢出异常(2)
3.本地方法栈 本地方法栈与虚拟机栈作用相同,不同的是虚拟机栈为java方法服务,本地方法栈为native方法服务,本地方法栈会抛出StackOverFlowError和OutOfMemoryErro ...