设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 网络编程 >> PHP教程 >> PHP中的XML拉模式解析
精品推荐
PHP教程点击TOP10
·PHP入门的学习方法
·PHP 和 MySQL 基础教程(一)
·十天学会php之第一天
·apache+mysql+php+ssl服务器之完全安装攻略
·Windows下PHP5和Apache的安装与配置
·确保PHP安全,不能违反的四条安全规则
·绝对简单易学的PHP入门教程
·浅谈PHP语法(1)
·学习动态网页技术PHP:GD库安装问题详解
·动态网页技术PHP通过参数来生成MYSQL语句类
网络编程点击TOP10
·C#编写的windows计算器-源代码
·ASP.NET 程序中常用的三十三种代码
·『原创』C#中TreeView类操作全攻略:建立树,新增节点,删除节点,修改节点,拖动节点,与Oracle数据库交互操作(一)
·用C#实现木马程序
·VS.net 2005 Beta 下载地址(Express Edition)
·从零开始学ASP.NET(基础篇)
·"SQL Server不存在或访问被拒绝"问题的解决
·C#版的网站新闻发布系统
·.NET 初 级 读 本
·c#操作word表格
精选专题

PHP中的XML拉模式解析

作者: 来源:http://www.xgdown.com/ 时间:2007-10-10 12:57:34

PHP中的XML拉模式解析(4)   if ($reader->nodeType == XMLReader::TEXT
   $reader->nodeType == XMLReader::CDATA
   $reader->nodeType == XMLReader::WHITESPACE
   $reader->nodeType == XMLReader::SIGNIFICANT_WHITESPACE) {
  $input .= $reader->value;
  }
  else if ($reader->nodeType == XMLReader::END_ELEMENT
  && $reader->name == "double") {
  break;
  }
  }

  您可以暂时忽略文档中的其它任何内容。(稍后将添加更多的错误处理。)

  构建响应

  正如它的名称所暗示的,XMLReader 仅仅用于读取。相应的 XMLWriter 类正在开发中,但还不能投入到生产。幸运的是,写入 XML 比读取 XML 要容易得多。首先,应使用 header() 函数来设置响应的媒体类型。对于 XML-RPC 来说,媒体类型是 application/xml。例如:

  

header('Content-type: application/xml');

  通常直接将内容显示在页面上,如清单 6 中的 respond() 函数所示。

  清单 6. Echo XML

  function respond($input) {
  echo "
  " .
  sqrt($input)
  . "
  ";
  }

  甚至可以将响应的文字部分直接嵌入 PHP 页面中,就像使用 HTML 时一样。清单 7 展示了该技术。

  清单 7. 文字表示的 XML

  function respond($input) {
  ?>
  "
  echo sqrt($input);
  ?>
  }

  错误处理

  到现在为止,一直隐含假定输入文档是格式规范的文档。但是不能保证情况都是如此。像任何 XML 解析器一样,只要发现一个规范格式错误,XMLReader 就必须停止处理。如果是这样的话,read() 函数将返回 false。

  从理论上讲,解析器将报告数据直到发现第一个错误。但是在对小型文档进行试验时,几乎是立刻显示错误信息。底层解析器将预解析大块文档,对它进行缓存,然后每次分发出一小块文档。因此往往会过早地检查错误。出于安全考虑,不要假定在发现第一个规范格式错误之前能够解析内容。此外,也不要假设解析错误出现之前看不到任何内容。如果希望只接受完整的、格式规范的文档,那么请确保在看到文档终点之前脚本不能进行任何不可逆操作。

  如果解析器检测到规范格式错误,那么 read() 函数将显示如下错误消息(如果启用了详细错误报告,且位于开发服务器上时):

  Warning: XMLReader::read() [function.read]:
  < value>10 in /var/www/root.php
  on line 35

  您可能不希望将它复制到用户所看到的 HTML 页面中。更好的方法是在 $php_errormsg 环境变量中捕获错误消息。为此,需要启用 php.ini 文件中的 track_errors 配置选项:

  

track_errors = On

  默认情况下,track_errors 选项是关闭的;这在 php.ini 中是显式指定的,因此请确保更改了该行代码。如果提早在 php.ini 中添加了上述一行代码(正如最初我所进行的操作),则后面的 track_errors = Off 代码将重写先前的代码。

  该程序仅将响应发送到完整的、格式良好的输入。(也是有效的,不过将实现这点。)因此您需要等待,直到完成了文档的解析(已经跳出 while 循环)。这时,检查是否设置了 $php_errormsg 变量。如果没有进行设置,则文档是格式良好的文档,然后发送 XML-RPC 响应消息。如果设置了该变量,则文档不是格式良好的文档,并发送 XML-RPC 错误响应。如果有人请求负数的平方根,也将发送错误响应。清单 8 展示以上操作。

  清单 8. 检查文档格式是否良好

  // set up the request
共7页 9 7 [1] [2] [3] [4] [5] [6] [78 :>

PHP中的XML拉模式解析 相关文章:
PHP中的XML拉模式解析 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com