Crm 2011 Fetch XMl - Неверная проблема с XML, как ее исправить?
Я использую 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- Какие еще нелегальные символы, чтобы я мог справиться с ними?
С уважением.
3 ответа
HttpUtility.HtmlEncode() работал для меня, обрабатывая недопустимые символы (<>&'").
<value>HttpUtility.HtmlEncode("Do you want to subscribe to 1 & 2?")</value>
Смотрите ниже статью для более подробной информации.
Как найти и заменить специальные символы в XML-файле с помощью Visual C# .NET
В XML есть пять "недопустимых" символов, которые должны быть закодированы как сущности:
<как & lt;
> as & gt;
'as & apos;
"как"
& as & amp;
Который является то, что HttpUtility.HtmlEncode()
эффективно делает.
Есть и другие, такие как символы умлаут, которые должны быть закодированы при использовании в HTML, но для Unicode XML, только эти пять обязательно должны быть учтены.
Я бы на самом деле использовал System.Net.WebUtility.HtmlEncode()
в отличие от HttpUtility.HtmlEncode()
потому что HttpUtility не поддерживается в средах с частичным доверием. Другими словами, в изолированном плагине, как для CRM Online.
@GCATNIM правильно упоминает "недопустимые символы", которые будут охвачены обоими этими методами.