面向PHP开发人员的XML 第2部分: 高级XML解析技术
2008-11-19 22:24:53 来源:WEB开发网使用 xml(标准化越来越近了)Reader
xml(标准化越来越近了)Reader 作为一种流解析器,非常适合解析大型 xml(标准化越来越近了) 文档,编码比 SAX 更简单,而且通常速度也快。这是理想的流解析器。
清单 10 中的例子使用 xml(标准化越来越近了)Reader 解析大型 xml(标准化越来越近了) 文档。
清单 10. xml(标准化越来越近了)Reader 解析大型 xml(标准化越来越近了) 文件
<?php
$reader = new xml(标准化越来越近了)Reader();
$reader->open("tooBig.xml(标准化越来越近了)");
while ($reader->read()) {
switch ($reader->nodeType) {
case (xml(标准化越来越近了)READER::ELEMENT):
if ($reader->localName == "entry") {
if ($reader->getAttribute("ID") == 5225) {
while ($reader->read()) {
if ($reader->nodeType == xml(标准化越来越近了)READER::ELEMENT) {
if ($reader->localName == "title") {
$reader->read();
echo $reader->value;
break;
}
if ($reader->localName == "entry") {
break;
}
}
}
}
}
}
}
?>
使用 SAX 解析
Simple API for xml(标准化越来越近了) (SAX) 是一种流解析器。事件与读入的 xml(标准化越来越近了) 文档相关联,因此 SAX 以回调的方式编码。元素打开关闭标记、元素内容、实体和解析错误都有对应的事件。使用 SAX 解析器而不是 xml(标准化越来越近了)Reader 的主要原因在于 SAX 解析器有时候效率更高一些,而且通常更被人们熟悉。SAX 解析器的主要缺点是代码很复杂,比 xml(标准化越来越近了)Reader 代码编写起来更难。
使用 SAX
SAX 对于那些曾经在 PHP4 中处理过 xml(标准化越来越近了) 的人来说可能比较熟悉,PHP5 中的 SAX 扩展与过去的版本兼容。由于也是流解析器,因此非常适合处理大型文件,但是比不上 xml(标准化越来越近了)Reader。
更多精彩
赞助商链接