这是将xml作为字符串发布的正确方法吗?

时间:2012-04-17 19:27:35

标签: php xml

我应该将一些xml作为xml标记内的字符串发送到Web服务。发送的文件显示为“不合规”,所以我只想检查并确保我正确发送它,所以我知道错误是来自它的发送方式而不是xml的实际内容。我正在使用PHP,所以我创建了一个包含我要发送的xml的字符串,

$send_xml = '<?xml version="1.0" encoding="UTF-8"?>
             <myFile><stuff></stuff></myFile>';

我把它放在外部xml中的内容标记之间,如下所示:

<content><![CDATA["'.$send_xml.'"]]></content>

这不应该将我的“$ send_xml”作为字符串发送吗?

2 个答案:

答案 0 :(得分:0)

您可能需要考虑不使用CDATA块,因为如果$send_xml本身包含CDATA块,CDATA块将会中断。

您可能希望在将$send_xml字符串放入xml字符串之前考虑转义它。

PHP可以使用htmlentities函数进行此类转义。

答案 1 :(得分:0)

我怀疑你的报价太多了。

尝试:

<content><![CDATA['.$send_xml.']]></content>

...来代替。

(假设您的PHP字符串是单引号),您的代码将生成:

<content><![CDATA["<?xml version="1.0" encoding="UTF-8"?><myFile><stuff></stuff></myFile>"]]></content>

......应该只是:

<content><![CDATA[<?xml version="1.0" encoding="UTF-8"?><myFile><stuff></stuff></myFile>]]></content>

...没有用双引号括起内部XML。

或者,这个:

<content>'.htmlspecialchars($send_xml, ENT_COMPAT).'</content>

...应该在解析时产生相同的结果,方法是转义内部XML中的特殊字符。