libxml2 包含更实用的方法 readString(),它将读取并返回元素的整个文本内容。您可以在收到开始标签(XMLReader::ELEMENT)后调用它。您可以在 PHP 直接调用底层 libxml2 实现之前使用这段 PHP 代码来模拟此方法。
<?php
class XMLReader2 extends XMLReader
{
function readString()
{
$depth = 1;
$text = "";
while ($this->read() && $depth != 0)
{
if (in_array($this->nodeType, array(XMLReader::TEXT, XMLReader::CDATA, XMLReader::WHITESPACE, XMLReader::SIGNIFICANT_WHITESPACE)))
$text .= $this->value;
if ($this->nodeType == XMLReader::ELEMENT) $depth++;
if ($this->nodeType == XMLReader::END_ELEMENT) $depth--;
}
return $text;
}
}
?>
只需使用 XMLReader2 而不是 XMLReader。