我在使用jquery设置cdata节点时遇到问题。使用.text()函数很容易获得cdata,但是如果我使用.text('jquery> handy'),它就不会创建cdata节点。
这是我的程序: 我在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()函数会删除它。我也试过这个:
domdoc.find('field[id="description"]').text('<![CDATA[' + $("#description").val() + ']]>');
这也不起作用,因为.text()更改&lt;到&amp; gt;
有没有人有解决方案?我的灵感消失了.....
谢谢, 西蒙
答案 0 :(得分:3)
简单的解决方案。创建CData节节点并将其附加到XML。我挣扎着JQuery .text()没有运气。这很棒。
var cDataSection = self.xmlDocument.createCDATASection(text);
$(element).empty();
$(element).append(cDataSection);
答案 1 :(得分:0)
只需设置文字,无需添加<![CDATA[
。 CDATA只是在XML中转义文本的方法之一,但由于jQuery为您逃脱,因此您不需要使用其他方法。 <
与<![CDATA[<]]>
一样好。对于XML应用程序,它们是相同的。