我应该将一些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"作为字符串发送吗?
您可能需要
考虑不使用 CDATA 块,因为如果 CDATA 块本身包含 CDATA 块$send_xml
则 CDATA 块将中断。
相反,您可能需要考虑在将$send_xml
字符串放入 xml 字符串之前对其进行转义。
PHP 可以使用 htmlentities
函数进行此类转义。
我怀疑你的引号太多了。
尝试:
<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 中的特殊字符来生成相同的结果。