使用XMLReader PHP解析带有标签的CDATA

时间:2018-07-10 14:29:52

标签: php xml parsing xmlreader cdata

我需要解析一个包含CDATA标记的XML文件。在此标签内,还有一个我要获取的标签。如何使用XMLReader来实现?

示例:

<glz:Param name="TITLE">
       <![CDATA[Yellow <http://www.yellow.it>]]>
</glz:Param>

如何获取完整的信息Yellow <http://www.yellow.it>?我只能得到“黄色”。

这是我的代码:

// load file, create a reader variable, etc.
if($reader->nodeType == XMLReader::CDATA)
{
   echo $reader->value;
}

2 个答案:

答案 0 :(得分:1)

根据您的评论:

问题可能是XmlReader正确获取了CDATA标记中的全部内容,但是您的浏览器再次将其解释为html。检查页面源以查看它是否包含一个元素。如果是这样,请尝试

echo htmlentities($reader->value); 

或发送内容类型为text / plain的标题。

答案 1 :(得分:0)

您可以通过字符串搜索获得它。如您所见,字符串“ http://www.yellow.it]]>不是XML,因此您无法使用XMLReader对其进行解析。 请在上面搜索字符串。 例如,您可以将字符串拆分为“ http:”,并且可以获得2个子字符串。 从第二个String中,您可以获得不带“>]]>”的完整链接。

希望这会有所帮助。