我正在使用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-有什么其他非法字符可以处理它们?
问候。
答案 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正确地提到了这两种方法所涵盖的“非法字符”。