函数:XMLReader::setSchema()
适用版本:PHP 5 >= 5.2.0, PHP 7
用法:XMLReader::setSchema() 方法用于设置用于验证 XML 文档的 XML Schema。
语法:bool XMLReader::setSchema ( string $filename )
参数:
- filename:要用于验证的 XML Schema 文件的路径。
返回值:如果成功设置了 XML Schema,则返回 true,否则返回 false。
示例:
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title>PHP Basics</title>
<author>John Doe</author>
<price>19.99</price>
</book>
<book>
<title>Advanced PHP</title>
<author>Jane Smith</author>
<price>29.99</price>
</book>
</bookstore>';
// 创建 XMLReader 对象
$reader = new XMLReader();
// 打开 XML 文件
$reader->xml($xml);
// 设置 XML Schema 文件
$reader->setSchema('bookstore.xsd');
// 开始解析 XML 文档
while ($reader->read()) {
if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'book') {
// 处理每个书籍节点
$book = array();
while ($reader->read()) {
if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'title') {
$reader->read();
$book['title'] = $reader->value;
}
// 处理其他节点...
}
// 打印书籍信息
print_r($book);
}
}
// 关闭 XMLReader 对象
$reader->close();
在上面的示例中,我们创建了一个包含两本书的简单 XML 文档。然后,我们使用 XMLReader 类来解析该文档,并通过调用 setSchema() 方法设置了一个名为 "bookstore.xsd" 的 XML Schema 文件进行验证。然后,我们使用 while 循环遍历每个 "book" 节点,并提取其中的 "title" 节点的值。最后,我们打印每本书的信息。
请注意,要成功使用 XMLReader::setSchema() 方法,需要确保 PHP 的 libxml 版本不低于 2.6.0,并且已启用验证功能。