в jQuery набор XML-тип CDATA


У меня проблема с установкой узла cdata с помощью jquery. Получение cdata легко сделать с помощью .функция text (), но если я использую .текст ('jquery > handy') он не создает узел cdata.

Это мой procecure: Я получаю данные формы в xml для загрузки в форму что-то вроде этого:

<formdata>
  <field id="title"><![CDATA[Some title]]></field>
  <field id="description"><![CDATA[Some description]]></field>
</formdata>

Я использую узлы cdata, потому что поле может содержать все виды специальных символов. Затем я загружаю данные в форму, получая содержимое узла .text ()

Если пользователь публикует форму, я обновляю xml и преобразовать его в sting, чтобы отправить его на сервер. Я знаю, что могу просто разместить поля, но у меня есть несколько веских причин поместить их в xml-документ. Все работает очень хорошо, но не в том случае, если пользователь вводит какие-то специальные символы. Это, как я установил значение узла (в данном примере "узел подробное их описание")

domdoc.find('field[id="description"]').text($("#description").val());

Таким образом, узел раньше был cdata, но .функция text() удаляет это. Я alo попробовал это:

domdoc.find('field[id="description"]').text('<![CDATA[' + $("#description").val() + ']]>');

Это также не работает, потому что .текст() изменения

Есть ли у кого-нибудь решение? Мое вдохновение ушло.....

Спасибо, Саймон

2 2

2 ответа:

Просто установите текст, не добавляя <![CDATA[. CDATA-это всего лишь один из способов экранирования текста в XML, но поскольку jQuery экранирует для вас, вам не нужно использовать другой метод. &lt; так же хорошо, как <![CDATA[<]]>. Для XML-приложений они идентичны.

Простое решение. Создайте узел раздела CData и добавьте его в XML-файл. Я боролся с JQuery .text () не повезло. Это сработало фантастически.

            var cDataSection = self.xmlDocument.createCDATASection(text);
            $(element).empty();
            $(element).append(cDataSection);