我应该将一些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”作为字符串发送吗?
答案 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中的特殊字符。