3

我正在使用 fetch xml 从 ms crm 2011 实体中检索值。它抛出INVALID XML 错误,示例 xml 如下所示:

<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>
    <entity name='xyz_registrationanswer'>
         <attribute name='xyz_registrationid' />
         <attribute name='xyz_name' />
         <filter type='and'> 
            <condition attribute='xyz_name' operator='in' >  
                <value>Do you want to subscribe to 1 & 2?</value>         
            </condition> 
        </filter> <order attribute='xyz_name' descending='false' />
    </entity>
</fetch>

通过调查问题,我发现了 1 到 2 之间的&符号的原因:

<value>Do you want to subscribe to 1 & 2?</value> 

1-有人可以帮我解决这个问题吗?

2-还有哪些其他非法字符,我可以处理它们?

问候。

4

3 回答 3

5

XML 中有五个“非法”字符必须编码为实体:

< 作为 <
> 作为 >
'作为'
" 作为 "
& 作为 &

这是HttpUtility.HtmlEncode()有效的。

还有其他一些字符,例如元音变音字符,在 HTML 中使用时应该进行编码,但对于 Unicode XML,只有绝对需要注意这五个字符。

于 2012-07-05T17:25:46.153 回答
3

HttpUtility.HtmlEncode () 通过处理非法字符(<>&'")为我工作。

<value>HttpUtility.HtmlEncode("Do you want to subscribe to 1 & 2?")</value>  

有关更多详细信息,请参阅下面的文章。

如何使用 Visual C# .NET 查找和替换 XML 文件中的特殊字符

于 2012-07-05T10:14:36.430 回答
2

我实际上会使用System.Net.WebUtility.HtmlEncode()而不是HttpUtility.HtmlEncode()因为 HttpUtility 在部分信任环境中不受支持。换句话说,在 CRM Online 的沙盒插件中。

@GCATNIM 正确提到了这两种方法都将涵盖的“非法字符”。

于 2012-10-05T16:06:14.103 回答