沃梦达 / 编程问答 / php问题 / 正文

如何让PHP implexml将<保存为自身,而不是<

How can I get PHP simplexml to save lt; as itself instead of amp;lt;(如何让PHP implexml将lt;保存为自身,而不是amp;lt;)

本文介绍了如何让PHP implexml将<保存为自身,而不是<的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

基本上,我有一个在不同位置更新XML文档的脚本...但是,我需要CDATA格式的文本...所以我尝试了一下:
                $PrintQuestion->content->multichoice->feedback->hint->Passage->Paragraph->addChild('TextFragment', '<![CDATA[' . $value[0] . ']]>');

遗憾的是,当我将XML保存回文件时,CDATA中的<;和>出现为它们各自的<;和$gt;代码,有没有办法避免这种情况?

注意:我们的解析器不知道如何读取&lt;&gt;代码,因此这是一个严重的问题

执行Simple_XML对象的print_r后,<;在源代码中显示为其本身!

必须是域保存将其转换为实体代码...您知道如何禁用此功能吗?

        //Convert SimpleXML element to DOM and save
        $dom = new DOMDocument('1.0');
        $dom->preserveWhiteSpace = false;
        $dom->formatOutput = false;
        $dom->loadXML($xml->asXML());
        $dom->save($filename);

推荐答案

正如我在评论中所说,SimpleXML对DOM节点的控制非常有限。以下是有关如何将DOMText节点替换为DOMCDATASection节点的示例。

$dom = new DOMDocument;
$dom->loadXML('<root><a>foo</a></root>');
$a = $dom->documentElement->childNodes->item(0);
$a->replaceChild(
    $dom->createCDATASection('bar'),
    $a->childNodes->item(0)
);
echo $dom->saveXml($a); // <a><![CDATA[bar]]></a>

有关如何使用DOMsee my answer here和some more here的详细示例

这篇关于如何让PHP implexml将&lt;保存为自身,而不是&amp;lt;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如何让PHP implexml将&lt;保存为自身,而不是&amp;lt;

基础教程推荐