WEB开发网
开发学院WEB开发PHP 面向PHP开发人员的XML 第2部分: 高级XML解析技术 阅读

面向PHP开发人员的XML 第2部分: 高级XML解析技术

 2008-11-19 22:24:53 来源:WEB开发网   
核心提示: 说了 DOM 的这么多优点之后,为了强调我的观点,面向PHP开发人员的XML 第2部分: 高级XML解析技术(4),最后再给出一个错误使用 DOM 的例子,然后在后面的例子中解决这个问题,但每次让 xml(标准化越来越近了)Reader 用 expand() 传递一个元素的数据,通过这种方法就能将 xml(标准化越来

说了 DOM 的这么多优点之后,为了强调我的观点,最后再给出一个错误使用 DOM 的例子,然后在后面的例子中解决这个问题。清单 4 中的例子将一个很大的文件加载到 DOM 中,只是为了用 DomXpath 从一个属性中提取数据。

清单 4. 错误使用 DOM 和 XPath,用于大型 xml(标准化越来越近了) 文档

<?php
// Parsing a Large Document with DOM and DomXpath
// First create a new DOM document to parse
$dom = new DomDocument();
// This document is huge and we don't really need anything from the tree
// This huge document uses a huge amount of memory
$dom->load("tooBig.xml(标准化越来越近了)");
$xp = new DomXPath($dom);
$result = $xp->query("/blog/entries/entry[@ID = 5225]/title") ;
print $result->item(0)->nodeValue ."n";
?>

后面清单 5 中的例子仍然使用 DOM 和 XPath,但每次让 xml(标准化越来越近了)Reader 用 expand() 传递一个元素的数据。通过这种方法就能将 xml(标准化越来越近了)Reader 传递的节点转换成 DOMElement。

清单 5. 正确使用 DOM 和 XPath,用于大型 xml(标准化越来越近了) 文档

<?php
// Parsing a large document with xml(标准化越来越近了)Reader with Expand - DOM/DOMXpath
$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) {
$node = $reader->expand();
$dom = new DomDocument();
$n = $dom->importNode($node,true);
$dom->appendChild($n);
$xp = new DomXpath($dom);
$res = $xp->query("/entry/title");
echo $res->item(0)->nodeValue;
}
}
}
}
?>

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:面向 PHP 开发

编辑录入:coldstar [复制链接] [打 印]
赞助商链接