0

我应该将一些 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”作为字符串发送吗?

4

2 回答 2

0

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

相反,您可能想考虑$send_xml在将字符串放入 xml 字符串之前对其进行转义。

PHP 可以使用该htmlentities函数进行这种转义。

于 2012-04-17T19:35:23.667 回答
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 中的特殊字符,应该在解析时产生相同的结果。

于 2012-04-17T19:36:08.143 回答