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


is this the correct way to post xml as a string?

我应该将一些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 中的特殊字符来生成相同的结果。