📜  PHP | XMLReader readString()函数(1)

📅  最后修改于: 2023-12-03 15:18:26.098000             🧑  作者: Mango

PHP | XMLReader readString()函数

简介

XMLReader readString() 方法用于读取和解析一个字符串形式的 XML 文档。该方法根据给定的字符串创建一个 XMLReader 对象,然后使用其它 XMLReader 的方法对其进行操作。

语法
XMLReader::readString ( string $source [, string $encoding = null [, int $options = 0 ]] ) : bool
参数
  • source:必选参数,指定要读取的 XML 文档字符串。
  • encoding:可选参数,指定源 XML 文本的字符编码,默认为 NULL,表示自动检测编码。
  • options:可选参数,用于指定读取选项,目前只支持 XMLReader::LOADDTD,用于在文档中保留 DTD 默认值为 0。
返回值

如果 XMLReader 成功读取了给定的字符串内容,则函数返回 true,否则返回 false

示例

以下示例将创建一个 XMLReader 对象,并通过 readString() 方法读取和解析一个 XML 字符串:

$xmlString = '<?xml version="1.0" encoding="UTF-8"?>
<book>
  <title>PHP 7 Programming Cookbook</title>
  <author>
    <name>David Sklar</name>
    <website>https://www.davidsklar.com/</website>
  </author>
  <publisher>
    <name>O\'Reilly Media</name>
    <website>http://oreilly.com/</website>
  </publisher>
  <publish_date>2016-01-26</publish_date>
</book>';

$reader = new XMLReader();
$reader->xml($xmlString);

while ($reader->read()) {
  if ($reader->nodeType == XMLReader::ELEMENT) {
    echo "<{$reader->name}>";
  } elseif ($reader->nodeType == XMLReader::TEXT) {
    echo $reader->value;
  } elseif ($reader->nodeType == XMLReader::END_ELEMENT) {
    echo "</{$reader->name}>";
  }
}

输出:

<book>
  <title>PHP 7 Programming Cookbook</title>
  <author>
    <name>David Sklar</name>
    <website>https://www.davidsklar.com/</website>
  </author>
  <publisher>
    <name>O'Reilly Media</name>
    <website>http://oreilly.com/</website>
  </publisher>
  <publish_date>2016-01-26</publish_date>
</book>
注意事项
  1. 使用 XMLReader readString() 方法读取 XML 字符串,可能会因为 XML 字符串格式不正确而导致解析失败。
  2. 在使用 XMLReader readString() 方法读取 XML 字符串时,需要格外留意 XML 字符串是否包含特殊字符,如 & 等,需要对其进行转义以避免解析错误。