📅  最后修改于: 2023-12-03 15:18:26.098000             🧑  作者: Mango
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>
XMLReader readString()
方法读取 XML 字符串,可能会因为 XML 字符串格式不正确而导致解析失败。XMLReader readString()
方法读取 XML 字符串时,需要格外留意 XML 字符串是否包含特殊字符,如 &
等,需要对其进行转义以避免解析错误。