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 правильно упоминает "недопустимые символы", которые будут охвачены обоими этими методами.

Другие вопросы по тегам