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

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

 2008-11-19 22:24:53 来源:WEB开发网   
核心提示: 清单 1 中的例子用 DOM 解析文档,通过 getElementById 检索一个元素,面向PHP开发人员的XML 第2部分: 高级XML解析技术(3),引用 ID 之前需要设置 validateOnParse=true 来验证文档,根据 DOM 标准,会影响迭代的 NodeList(参见清单 2),不需要验证,它

清单 1 中的例子用 DOM 解析文档,通过 getElementById 检索一个元素。引用 ID 之前需要设置 validateOnParse=true 来验证文档。根据 DOM 标准,它要求 DTD 定义一个 ID 类型的属性 ID。

清单 1. 使用 DOM 处理基本文档

<?php
$doc = new DomDocument;
// We must validate the document before referring to the id
$doc->validateOnParse = true;
$doc->Load('basic.xml(标准化越来越近了)');
echo "The element whose id is myelement is: " .
$doc->getElementById('myelement')->tagName . "n";
?>

getElementsByTagName() 函数返回类 DOMNodeList 的一个新实例,包含使用给定标记名的元素。当然这个列表需要遍历。迭代 getElementsByTagName() 返回的 NodeList 的同时修改文档结构,会影响迭代的 NodeList(参见清单 2)。不需要验证。

清单 2. DOM getElementsByTagName 方法

DOMDocument {
DOMNodeList getElementsByTagName(string name);
}

清单 3 中的例子结合使用了 DOM 和 XPath。

清单 3. 使用 DOM 和 XPath 进行解析

<?php
$doc = new DOMDocument;
// We don't want to bother with white spaces
$doc->preserveWhiteSpace = false;
$doc->Load('book.xml(标准化越来越近了)');
$xpath = new DOMXPath($doc);
// We start from the root element
$query = '//book/chapter/para/informaltable/tgroup/tbody/row/entry[. = "en"]';
$entries = $xpath->query($query);
foreach ($entries as $entry) {
echo "Found {$entry->previousSibling->previousSibling->nodeValue}," .
" by {$entry->previousSibling->nodeValue}n";
}
?>

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

Tags:面向 PHP 开发

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