DOM方式和SAX方式的异同
1 先将XML文件在内存中解析成节点树,如果XML文件非常大,会占用很大的内存。
SAX:不需要在内存中生成节点树,而是遇到标签就解析
2,SAX解析速度比DOM要快
3,如果XML结构有问题的话,DOM方式无法解析,因为无法在内存中生成节点树,SAX会一直解析,直到错误的发生地。
simpleXML解析XML文件
SimpleXML专门提供的一种简单的操作 XML文件的对象:
实例化simpleXML对象:
原理:
simpleXMLElement这个对象会将所有的XML的元素转化成对象,相同的元素名转化成对象的集合。
XPath的路径,用来定位(找到)XML元素(节点)
XPath的定位功能是通过DOMPath对象来实现的。
例如:
<?php
$doc=new DOMDocument('1.0','utf-8');
$doc->load('bookshelf.xml');
//我们定位元素是通过DOM方式去定位的
$DOMXPath=new DOMXPath($doc);
//定义查找规则
// 1 通过元素名查找
//$rule="//title";
// 2 按照元素间的关系
// $rule="/bookshelf/book/title";
// 3 通过集合中的索引,注意这里的索引从1开始
// $rule="/bookshelf/book[1]";
// 4 利用子元素进行查找
//$rule="/bookshelf/book[author='jk']";
// 5 利用元素的属性
//$rule="/bookshelf/book[@id='book1']";
// 6 获得元素的属性
//$rule="/bookshelf/book[@id][1]";
//通过$DOMXPath对象的query()去查询
$pas=$DOMXPath->query($rule);
//定位到具体某一个
$one=$pas->item(0)->nodeValue;
var_dump($one);
DTD
XML文件:格式良好的xml,只要符合语法规范就行
1.先将DTD验证规则和XML文件关联起来
<!DOCTYPE 根元素 SYSTEM 'dtd文件'>
定义元素
<!ELEMENT 元素名 元素特征>
定义属性
<!ATTLIST 元素名 属性名 属性类型 属性的特征值>
CDATA 属性是一个普通值
ID 属性是唯一的标识
#REQUIRED 代表当前的属性是必须的
#IMPLIED 代表当前的属性是可选的。
引用实体
在XML文档中使用的实体符号
<!ENTITY 实体名称 "实体的值">
参数实体
在DTD文档中使用的实体符号
<!ENTITY % 实体名称 "实体的值">
1,MVC
M Model 模型
V View 视图
C Controller 控制器
Ecshop php 的代码和html相分离 include
Smarty 模板引擎-------就是将php html 分离,分配数据,显示模板内容
现在 负责处理数据的逻辑 和 php代码还写在一起
将数据的处理也分离出来
Model
1,model 处理数据的,原则是:
每一张数据表对应一个模型,例如,需要操作user数据表,在model里面就应该有userModel这个文件
2,views存放所有的模板文件(显示),因为有前台和后台,前台的放在home目录下,后台的放到admin目录下
3,控制器,负责逻辑的也分为前台和后台,所以前台的也是放在home目录下,后台的放在admin目录下
4,插件目录(类似于smarty)
通过index.php访问,实现数据的增删改查 传递act参数
我们在index.php里,传参数,做判断,实现不同的功能
例如:
做一个商品的管理
userController(前面是控制器名)+Controller
我们还要采用面向对象的思想去实现
类
属性
方法
对象
searchAction
我们将控制器所做的所有的动作,定义为一个函数,统一xxxAction
例如用户传递c=goods&a=search
代表调用goodsController控制器的searchAction方法