2012-07-05 61 views
3

我使用fetch xml来从ms crm 2011实体中重新获取值。 它抛出INVALID XML错误,XML示例在下面给出:Crm 2011抓取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> 

通过invistigating问题,我发现的原因是1和2之间的&符号:

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

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

2 - 什么是其他非法字符,所以我可以处理?

问候。

回答

5

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

< as & lt;
> as & gt;
' as &'
" as &“
&为&安培;

这是什么HttpUtility.HtmlEncode()有效呢。

还有其他的,如元音字符,在HTML中使用时,应进行编码的,但对Unicode的XML,只有五绝,必须照顾。

2

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

@GCATNIM正确地提到了“非法字符”,这将通过这两种方法所覆盖。