Zoho API 中 XML 中的符号错误

Error with ampersand in XML in Zoho API

我正在使用 Zoho API 将销售线索插入 CRM。

一切正常,除非其中一个字段包含与号,在这种情况下,Zoho 的响应是这样的:

<?xml version="1.0" encoding="UTF-8" ?>
<response uri="/crm/private/xml/Leads/insertRecords">
  <error>
    <code>4835</code>
    <message>Unable to parse XML data</message>
  </error>
</response>

我尝试了以下有效负载但没有成功:

1/

<Leads>
    <row no="1">
        <FL val="Lead Owner">me@example.com</FL>
        <FL val="Company">Marks & Spencer</FL>
    </row>
</Leads>

2/

<Leads>
    <row no="1">
        <FL val="Lead Owner">me@example.com</FL>
        <FL val="Company">Marks &amp; Spencer</FL>
    </row>
</Leads>

3/

<Leads>
    <row no="1">
        <FL val="Lead Owner">me@example.com</FL>
        <FL val="Company">Marks &#038; Spencer</FL>
    </row>
</Leads>

4/

<Leads>
    <row no="1">
        <FL val="Lead Owner">me@example.com</FL>
        <FL val="Company"><![CDATA[Marks &amp; Spencer]]></FL>
    </row>
</Leads>

我什至按照 Zoho forum thread 上的建议用 %26 替换了 & 符号进行了测试,但没有成功。

Zoho 查询的正确编码格式是什么?

终于找到了解决方法:包含特殊字符的字符串必须包含在CDATA部分AND那些特殊字符需要是percent encoded.

所以对于上面的例子,这给出了:

<Leads>
    <row no="1">
        <FL val="Lead Owner">me@example.com</FL>
        <FL val="Company"><![CDATA[Marks %26 Spencer]]></FL>
    </row>
</Leads>

请注意,值 Marks%20%26%20Spencer 也适用于 API。