【发布时间】:2013-11-14 01:58:01
【问题描述】:
我一直在测试一些东西,但我无法让它工作,这是问题所在:
我有一个 xml:
<?xml version="1.0" encoding="UTF-8"?>
<history>
<name>
<age/>
</name>
</history>
我想在那个 XML 中插入一个 CDATA,CDATA 的内容也是 xml 的一部分,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<history>
<![CDATA[
<name>
<age/>
</name>
]]>
</history>
我正在使用 DOMDocument 创建 xml:
header('Content-Type: text/xml');
$xml = new DOMDocument("1.0","UTF-8");
$base = $xml->appendChild($xml->createElement('history'));
$name = $base->appendChild($xml->createElement('name'));
$age = $name->appendChild($xml->createElement('age'));
$test = $xml->saveXML();
$xml->getElementsByTagName('history')->item(0)->appendChild($xml->createCDATASection($test));
$xml->formatOutput = true;
echo $xml->saveXML();
它会生成这个 xml:
<?xml version="1.0" encoding="UTF-8"?>
<history>
<name>
<age/>
</name>
<![CDATA[<?xml version="1.0" encoding="UTF-8"?><history><name><age/></name></history>]]>
</history>
我现在面临的问题是:
- 从我对 CDATA 工作原理的看法来看,我似乎需要先完成所有“内部 xml”,然后才能剪切“内部 xml”,然后创建 cdata 部分并将其粘贴到 cdata 部分中
- 我正在使用 str_replace 临时解决方案,但我想尽可能多地使用 domdocument createCData 函数。
【问题讨论】:
-
在 CDATA 中包含 XML 对我来说看起来不太好。目的是什么?
-
@michi 不知何故,我们合作伙伴的 API 要求我们包含它,没有它他们会给出系统错误。
标签: php xml domdocument cdata