2014-10-20 1 views
1

У меня есть следующий XML-код, который фильтрует мое поле поиска в моей форме Crm Dynamics. Фильтр используется после данных, введенных в поле Учетная запись. Однако поле учетной записи может содержать символ &, и когда это произойдет, возникает ошибка, указывающая на то, что XML не сформирован правильно.& Ошибка, вызывающая символ в XML-коде

У кого-нибудь есть решения проблемы?

function accountcontact() 
{ 
    Xrm.Page.getControl("new_contactlookup").addPreSearch(function() { addcontactlookup(); }); 

    function addcontactlookup() 
    { 
     var accountID = Xrm.Page.getAttribute("new_companylookup"); 
     var AccountIDObj= accountID.getValue(); 

     if (AccountIDObj != null) 
     { 
      var fetchFilter1 = "<filter type='and'><condition attribute='parentcustomerid' uitype='" + AccountIDObj[0].entityType + "' operator='eq' value='" + AccountIDObj[0].id + "' uiname='" + AccountIDObj[0].name + "' /></filter>"; 
      Xrm.Page.getControl("new_contactlookup").addCustomFilter(fetchFilter1); 
     } 
    } 
} 
+3

Он должен быть экранированы в '' & Используйте функцию полезности (я предполагаю, JavaScript): [? Как избежать XML-объектов в JavaScript] (http://stackoverflow.com/questions/7918868/how -to-escape-xml-entities-in-javascript) –

+0

Почему вы хотите добавить фильтр с помощью javascript вместо фильтрации Contact by Account, просто изменив форму с помощью OOB toools? – AdamV

ответ

0

Некоторые символы имеют специальное значение в XML и амперсанд (&) является одним из них. Следовательно, эти символы должны быть заменены (т.е. использовать замену строк) соответствующими ссылками на сущности. В соответствии со спецификацией XML, есть 5 predefined entities в XML:

&lt; < less than 
&gt; > greater than 
&amp; & ampersand 
&apos; ' apostrophe 
&quot; " quotation mark 

В качестве альтернативы, вы можете поместить «текст» строки, которые могут содержать специальные символы в секции CDATA так XML парсеры не будет пытаться разобрать их. Пример:

<SomeElement><![CDATA[This & will be ignored]]></SomeElement>