一、小序
html简单易学又通用,一般的php程序就是嵌入在html语言之中实现的。但是随着web越来越广泛的应用,html的弱点也越来越明显了。xml的出现,弥补了这些不足,它提供了一个能够处理互联网上全部数据的通用方法。
二、html的局限性分析
1、 html的可扩展性差。虽然作为一般的应用,html应经够用了,但是在处理数学和化学等符号时,html有明显的缺点,而且它无法进行扩展,这样使它的发展收到了极大的限制。
2、 链路丢失后不能自动纠正。由于web页面的url地址经常改变,而在改变url地址时必须手工修改这些信息,否则就会遇到“404url地址未找到”的信息,这大大加重了web页面的维护工作量。
3、 数据搜索的时间长。由于html主要用来对网页的显示进行控制,导致了同一个数据在不同的网页中有不同的存储格式,这样在进行数据搜索时就无法快速找到所需的资料。
4、 html对双字节或者多国文字的支持不够。例如中文信息页面在不同的平台下会出现无法显示等问题。
正是由于这些缺点,人们研究了能够代替html的web页面制作语言。其中已经投入使用的有:可扩展标记语言xml、层叠样式表(css)以及动态html(dhtml)等。
三、xml的组成
这里简要列举几种主要的xml技术:
1、 dtd(文档类型声明)
dtd的主要功能是定义xml的内容模式;限制xml标记的数据范围;定义属性的数据类型。但由于它不是用xml编写的,因此扩展性比较差;而且只提供了有限的几种数据类型,因此它的作用是有限的。
2、 xml schema
xml schema的作用和dtd类似。但不同的是,schema文件所描述的是引用它的xml文件中的元素和属性的具体类型。另外,由于它是由xml编写的,schema和dtd相比较还有以下优点:
·xml schema内容模型是开放的,可以随意扩充,而dtd无法解析扩充的内容。
·dtd只能把内容类型定义为一个字符串,而xml schema允许把内容类型定义为整型、浮点型、布尔型或者许多其它的简单数据类型。
·xml schema利用namespaces将文档中特殊的节点与schema相联系,一个xml文件可以有多个对应的schema,而一个xml文件只能有一个dtd。
3、 xlink
作为一种web语言,xml的链接能力是非常重要的。xml的链接和定址机制包括xlink、xpath和xpointer。xlink提供功能强大的链接方法,可以在文档之间建立单向或多向的复杂联结关系,还有注释链接、概要链接、扩展链接集等多种链接功能。xpath在xslt和xpointer中使用,支持在xml文档中相对于节点和节点集的定位。xpointer在xpath的基础上提供对xml文档的内容的内部结构(如一个字符串或者选择的一个段落)的定位。xml的链接能力比html有了很大的增强。
4、 css与xsl
xml的一大特点就是内容与格式分离,也就是说,xml文档中并不包含如何显示/表示文档的信息。css与xsl(xml style language)解决了xml文档的显示问题。
css(层叠样式表)也可以用在html和xml中。xsl完全使用xml的语法,功能比css要强大得多。
5、 dom
文档对象模型(dom)是一个与平台、语言无关的程序接口,它提供了动态访问和更新文档的内容、结构与风格的手段。可以对文当作进一步的处理,并将处理的结果更新到表示页面。
dom的目标就是为xml和html定义一个标准的编程接口,它包括核心、html和xml三部分。dom的核心部分建立了一套底层的对象集,它们可以表示任何结构化的文档。html和xml提供了高层的接口,可以作为更方便的文档视图。dom规范由对象和方法组成。程序员使用它们可以更容易地对特定类型的文档进行访问和操作。
6、 namespaces
namespaces是用url加以区别的、在xml文件的元素和属性中出现的所有名称的集合。在xml中,用户可以自己定义标记和元素。因此,如果把多个xml文件合并为一个,就很可能出现冲突。namespaces则解决了这个问题。
四、php对xml的支持
php对xml提供了的强大的支持。它使用了一个xml的“解析器”,并且为了支持这个解析器,它提供了20(php4)个xml的解析函数。下面是几个最常用的php解析函数。
1. xml_parse
boolean xml_parse(int parser, string data, int [isfinal]);
本函数用来解析 xml 格式的文件资料。参数 parser 为解析代码。参数 data 为解析的资料区块 (chunk)。参数 isfinal 可省略,若设为 true 则系统会自动送出最后的资料部分 (piece) 给 data 参数。若无错误则返回 true 值。
2. xml_parser_create
int xml_parser_create(string [encoding]);
本函数用来初始化一个新的 xml 解析器。参数 encoding 可省略,为 xml 使用的字符集,默认值为 iso-8859-1,其它尚有 us-ascii、utf-8 二种。成功则返回 parser 代码供其它函数使用,失败则返回 false 值。
3. xml_set_element_handler
boolean xml_set_element_handler(int parser, string startelementhandler, string endelementhandler);
本函数配置元素的标头供 xml_parse() 函数使用。参数 parser 为解析代码。参数 startelementhandler 及 endelementhandler 分别为元素开始与结束的标头,其中的 startelementhandler 必须包括解析代码、名称、与属性,而 endelementhandler 参数包括了解析代码及名称二个参数。若无错误则返回 true 值。
4. xml_set_character_data_handler
boolean xml_set_character_data_handler(int parser, string handler);
本函数配置字符资料的标头。参数 parser 为解析代码。参数 handler 包括解析代码及资料字符串等二个元素。若无错误则返回 true 值。
5. xml_get_error_code
int xml_get_error_code(int parser);
本函数可取得 xml 在处理时的错误代码。参数 parser 为解析代码。若 parser 有错则返回 false 值,否则就返回错误代码 (如 xml_error_binary_entity_ref .... 等等)。
6. xml_error_string
string xml_error_string(int code);
本函数可取得 xml 在处理时的错误代码。参数 code 为解析错误代码。若无错误返回值为代码的文字描述字符串。
7. xml_get_current_line_number
int xml_get_current_line_number(int parser);
本函数用来取得目前 xml 解析所正在处理的行号。参数 parser 为解析代码。若 parser 有错则返回 false 值,若无错误则返回行号数字。
8. xml_parser_free
boolean xml_parser_free(int parser);
本函数用来释放目前 xml 解析所使用的内存。参数 parser 为解析代码。若没有错误则返回 true 值,否则返回 false 值。
五、案例解析
以下是用php5实现读取一个以xml 1.0格式编写的通讯录address.xml,并显示其内容的示例。详解见有关注释。
<?
//
//第一部分:几个php helper函数
//
/**********************************
*从一个文件中读取xml的 *
*内容到字符串中 *
*********************************/
function read_file($filename)
{
//读取文件
$lines=file($filename);
//变量$contents是存放文件内容的变量
$contents="";
while(list($key,$value)=each($lines))
{
$contents.=$value;
}
return $contents;
}
/*********************************
*当php遇到一个xml的起始标记时 *
*调用,其作用是按照一定的层次 *
*显示出xml的标记 *
*********************************/
function start_element($parser, $name, $attrs)
{
//变量$depth存放标记的深度
global $depth;
//变量$spacer存放标记前所有的箭头符号
$spacer="";
for ($i=1;$i<$depth[$parser];$i++)
{
$spacer.="->";
}
//设置标记显示时的颜色
if($depth[$parser]==0)
{
$font_color="red";
}
else
if($depth[$parser]==1)
{
$font_color="green";
}
else
{
$font_color="blue";
}
//设置标记显示时的字体
$font_size=5-$depth[$parser];
if ($font_size<2)
{
$font_size=2;
}
//显示标记
echo "<font size=".$font_size." color=".$font_color.">";
echo $spacer.$depth[$parser];
if ($depth[$parser]<>0)
{
echo "、";
}
echo $name."<br>";
echo "</font>";
$depth[$parser]++;
//如果是主标记就显示红色的水平线
if($depth[$parser]==2)
{
echo "<hr color=red size=1>";
}
}
/*********************************
*当php遇到一个xml的结束标记时 *
*调用,其作用是改变当前的层次 *
*计数,并在主标记下显示水平线 *
0
0
相关文章
CodeIgniter在Linux上权限配置问题解决_CodeIgniter权限故障排查【介绍】
宝塔面板Nginx防火墙怎么开启?利用宝塔插件防御恶意扫描
如何使用 JavaScript 动态添加多道题目表单(含完整示例)
宝塔面板如何安装并配置Elasticsearch?在宝塔面板中部署高性能搜索
宝塔面板和aapanel有什么区别?海外服务器安装宝塔国际版教程
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。
49
2026.03.13
本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。
89
2026.03.12
本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。
276
2026.03.11
本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。
59
2026.03.10
本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。
99
2026.03.09
本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。
105
2026.03.06
本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。
230
2026.03.05
本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。
619
2026.03.04
2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!
173
2026.03.04
热门下载
相关下载
精品课程
最新文章

