使用 XMLReader PHP 解析带有标签的 CDATA
Parse CDATA with tag inside, using XMLReader PHP
我需要解析一个包含 CDATA 标签的 XML 文件。在这个标签内,还有另一个我想要获取的标签。如何使用 XMLReader 实现此目的?
示例:
<glz:Param name="TITLE">
<![CDATA[Yellow <http://www.yellow.it>]]>
</glz:Param>
如何获得全部信息 Yellow <http://www.yellow.it>
?我只能得到 'Yellow'.
这是我的代码:
// load file, create a reader variable, etc.
if($reader->nodeType == XMLReader::CDATA)
{
echo $reader->value;
}
可以通过字符串搜索得到。如您所见,String "http://www.yellow.it]]>" 不是 XML,因此您无法使用 XMLReader 解析它。
请在上面搜索字符串。
例如,你可以将字符串拆分为 "http:",你可以得到 2 个子字符串。
从第二个字符串中,您可以获得完整的 link 而无需“>]]>”。
希望对您有所帮助。
根据您的评论:
问题可能是 XmlReader 正确获取了 CDATA 标记中的全部内容,但您的浏览器再次将其解释为 html。检查页面源以查看它是否包含 a 元素。如果是这样,请尝试
echo htmlentities($reader->value);
或发送 header 与 content-type: text/plain.
我需要解析一个包含 CDATA 标签的 XML 文件。在这个标签内,还有另一个我想要获取的标签。如何使用 XMLReader 实现此目的?
示例:
<glz:Param name="TITLE">
<![CDATA[Yellow <http://www.yellow.it>]]>
</glz:Param>
如何获得全部信息 Yellow <http://www.yellow.it>
?我只能得到 'Yellow'.
这是我的代码:
// load file, create a reader variable, etc.
if($reader->nodeType == XMLReader::CDATA)
{
echo $reader->value;
}
可以通过字符串搜索得到。如您所见,String "http://www.yellow.it]]>" 不是 XML,因此您无法使用 XMLReader 解析它。 请在上面搜索字符串。 例如,你可以将字符串拆分为 "http:",你可以得到 2 个子字符串。 从第二个字符串中,您可以获得完整的 link 而无需“>]]>”。
希望对您有所帮助。
根据您的评论:
问题可能是 XmlReader 正确获取了 CDATA 标记中的全部内容,但您的浏览器再次将其解释为 html。检查页面源以查看它是否包含 a 元素。如果是这样,请尝试
echo htmlentities($reader->value);
或发送 header 与 content-type: text/plain.