Crm 2011 Fetch XMl - 无效的XML问题,如何修复?

时间:2012-07-05 09:27:34

标签: xml dynamics-crm-2011 fetchxml

我正在使用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之间的&amp; 符号:

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

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

2-有什么其他非法字符可以处理它们?

问候。

3 个答案:

答案 0 :(得分:5)

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

&LT; as&amp; lt;
&GT; as&amp; gt;
'as&amp;'; “as&amp; quot;
&安培; as&amp; amp;

HttpUtility.HtmlEncode()有效地做了什么。

还有其他的,例如变音字符,在HTML中使用时应编码,但对于Unicode XML,只有五个绝对必须要处理。

答案 1 :(得分:3)

HttpUtility.HtmlEncode ()通过处理非法字符(&lt;&gt;&amp;'“)为我工作。

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

有关详细信息,请参阅下文。

How to locate and replace special characters in an XML file with Visual C# .NET

答案 2 :(得分:2)

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

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