php - 无法使用 SimpleXML 解析 CDATA

标签 php simplexml libxml2

我有以下 XML 代码:

<para>
      <![CDATA[
        <?php
        $data = '<?xml version="1.0"?>
        <root>content</root>';
        $sxe = simplexml_load_string($data);
        var_dump($sxe);
        ?>
      ]]>
    </para>

我想解析 CDATA 部分以获取此结果:

Content:
<?php
$data = '<?xml version="1.0"?>
<root>content</root>';
$sxe = simplexml_load_string($data);
var_dump($sxe);
?>

我使用了以下方法,但它不起作用。

$xml='sxml.xml';
$book = simplexml_load_file($xml, 'SimpleXMLElement', LIBXML_NOCDATA);

$para = $book->chapter->para[1];
print "Content: ".$para."<br>";

foreach($para AS $node) {
    print "Iter Content: ".$node."<br>";    
}

这会导致:

Content: 


        content';
        $sxe = simplexml_load_string($data);
        var_dump($sxe);
        ?>

在 phpinfo() 中,它显示 libxml 已启用且处于事件状态。 有什么帮助吗?提前致谢

最佳答案

您应该使用 htmlspecialchars 对特殊字符进行编码

例如: print "Content: ".htmlspecialchars($para)."<br>";

关于php - 无法使用 SimpleXML 解析 CDATA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11527447/

相关文章:

php - 我的上传脚本只能在我的电脑上运行

php - 如何将以前的值连接到 sql 中的新值?

php - 使用 PHP 更新 XML 节点

php - 使用 php 将数据更新/附加到 xml 文件

php - MySQLi - 插入多行 - 空 POST 数组

php - 无法解释的 Gearman 超时之谜

php - 从 sibling 中检索数据到匹配的节点

gtk3 - 在 macOS Sierra 10.12.3 上安装 GTK+ - libxml2 问题

c - libxml2:xmlNewTextWriterFilename 泄漏

objective-c - 简单的 libxml2 HTML 解析示例,使用 Objective-c、Xcode 和 HTMLparser.h