第一次尝试使用“简单”XML时,我正在撕裂我的头发。我正在为基于Flash的站点构建一个小型CMS,内容保存在XML文件中。我的问题是许多复制字段是XML CDATA字段。一方面,用:
$xml = simplexml_load_file($file, 'SimpleXMLElement', LIBXML_NOCDATA);
我可以从该节点中提取数据,并剥离CDATA标签。我的问题来自尝试使用以下方式保存数据:
file_put_contents($file, $xml->asXML());
问题是:
a)标签用它们的HTML实体等价物解释。我不希望这种情况发生。我收集这是来自asXML方法,因为即使我在$ _POST数据上执行了html_entity_decode,它仍然被转换。
b)由于上述原因,没有办法添加CDATA标签,因为它们也有转换的字符。
到目前为止,SimpleXML对我来说简直太简单了。有没有人碰到这个?答案 0 :(得分:1)
答案 1 :(得分:0)
之前我没有使用过simpleXML,但是如果你的问题是你的数据被保存为XML编码,那么Flash可以将XMLEncoded数据本地转换为XML对象。您可以加载数据并将其传递给新的XML对象,如下所示:
var ldr:URLLoader = new URLLoader( new URLRequest('./test.xml') );
ldr.addEventListener( Event.COMPLETE, handleLoaded );
function handleLoaded( e:Event ) : void
{
var xml:XML = new XML(e.target.data);
}
您将拥有一个原生的Flash XML对象。
如果您使用的是AS2,则需要使用LoadVars对象来加载数据,但是您需要使用onData
(非onLoad
)事件来获取XML编码的字符串并将其传递给XML对象。
不确定这是否可以解决您的问题,但可能会有所帮助。