Php 通过SAX解析XML: 遇到一个标签就解析这个标签 遇到一个数据就解析一个数据 解析完成之后处理数据
SAX ------- 不在内存中生成节点树 ,
创建解析器
规定如何去处理碰到的标签和数据
开始解析
解析完成之后如何处理(错误信息 )
需要用到的函数:
Xml_parser_create() -- 参数是编码
Xml_set_element_handler() --- 遇到标签 参数1 创建的解析器名称 参数2 遇到开始标签的处理函数 参数3 遇到结束标签的处理函数
Xml_set_character_data_handler() --遇到数据 参数1 解析器名称 参数2 处理数据函数
Xml_parse() 参数1 解析器 参数2 要处理的XML的内容 参数3 标签或者数据时候已经处理完成 如果不写解析器会一直等待
Xml_get_error_code() ----错误代码
xml_error_string() --------错误信息
获取属性值 通过数组下标的形式 数组下标要大写
当XML文件中有英文和汉字时 需要CDATA来做特殊的处理
语法:<![CDATA[ ]]>
DOM方式和SAX方式的异同:
DOM 在XML文件在内存中解析成节点树 XML文件很大的话 会占用很大的内存空间
SAX 不需要在内存中生成节点树 遇到标签就开始解析 解析速度比DOM快
如果XML结构有问题,DOM方式无法解析 因为在内存中无法生成节点树
SAX则会一直解析,直到解析到错误处停止
DOM一般用于解析复杂的XML文件
SAX用于解析数据量特别大的XML文件
simpleXML解析XML: php提供的一种简单的操作XML文件对象
实例化对象 simpleXML ------ simpleXMLElement 会将XML的元素转换成对象 相同的元素名会转化成对象集合 -- 用foreach访问
访问某一个节点:
访问元素的属性,通过数组下标形式
找到具体的某一个对象的集合 通过foreach便利
找具体某一个元素,通过数组的索引访问
节点的增删改:
增加: addChild(节点名,值) 保存 -- asXML();
删除:unset();
修改:重新赋值