English | 简体中文 | 繁體中文
查询

XMLReader::setSchema()函数—用法及示例

「 设置用于验证 XML 文档的 XML Schema 」


函数: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,并且已启用验证功能。

补充纠错
热门PHP函数
分享链接