Dilip Mevada Ответов: 1

Как parsexml в jquery с & значением в нем?


Всем Привет,
Я столкнулся с одной проблемой при синтаксическом анализе XML в jquery.

Данные, сохраненные в БД:
<приемлемость>
&ЛТ;право ИД="GeneralManager&амп;FinanceManager_CRM1140" свойством membertype="сотрудник"и GT;
<name>GeneralManager&FinanceManager_CRM1140

&ЛТ;право ИД="менеджеров(exceptGeneralManager&амп;FinanceManager)_CRM1140" свойством membertype="сотрудник"и GT;
<name>менеджеры(кроме generalmanager&financemanager)_CRM1140



На стороне клиента varialbe мы получаем,
<приемлемость>
&ЛТ;право ИД="GeneralManager&амп;FinanceManager_CRM1140" свойством membertype="сотрудник"и GT;
<name>GeneralManager&FinanceManager_CRM1140

&ЛТ;право ИД="менеджеров(exceptGeneralManager&амп;FinanceManager)_CRM1140" свойством membertype="сотрудник"и GT;
<name>менеджеры(кроме generalmanager&financemanager)_CRM1140




Но когда мы анализируем в jquery $.parseXml() на стороне клиента, он автоматически преобразует резервные копии в формат ниже.
& является недопустимым xml в соответствии с правилами xml.
<приемлемость>
&ЛТ;право ИД="GeneralManager&амп;FinanceManager_CRM1140" свойством membertype="сотрудник"и GT;
<name>GeneralManager&FinanceManager_CRM1140

&ЛТ;право ИД="менеджеров(exceptGeneralManager&амп;FinanceManager)_CRM1140" свойством membertype="сотрудник"и GT;
<name>менеджеры(кроме generalmanager&financemanager)_CRM1140



Как мы можем решить эту проблему?

Что я уже пробовал:

$(xmldata).find('приемлемый').each(функция (id, имя) {
идентификатор = $(это).буква attr('идентификатор');
имя = $(это).дети('имя').текст();
уведомление(идентификатор + имя);
//$(этот).буква attr('идентификатор', ИД.заменить("&ампер;", "&амп;"))
//$(benefitXml).найти('право').буква attr('идентификатор', ИД.заменить("&ампер;", "&амп;")));
//$(этот).найти ("имя").вал(имя.заменить("&ампер;", "&амп;"));
// сделайте что-нибудь с идентификатором, именем и описанием
});

Я хочу найти & для конкретного узла и атрибута, а затем заменить & на & и проанализировать с помощью $.parseXML() без каких-либо ошибок.

1 Ответов

Рейтинг:
2

Thomas Daniels

Сделать строку заменить, чтобы заменить & используя что-то поддерживаемое (допустимый символ, строку), которое больше нигде не отображается в ваших значениях, затем проанализируйте XML и выполните "обратную замену" (т. е. замените выбранный символ/строку & снова). Условие "больше нигде не появляется в ваших значениях" довольно важно, потому что в противном случае обратная замена может просто изменить слишком много деталей в &.

Хотя в идеале вы начинаете с допустимого XML вместо того, чтобы использовать такие трюки. Если у вас есть какой-либо контроль над XML, я бы посоветовал просто сохранить его действительным с самого начала.