jquery设置xml cdata

时间:2010-11-22 15:21:11

标签: jquery xml cdata

我在使用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;

有没有人有解决方案?我的灵感消失了.....

谢谢, 西蒙

2 个答案:

答案 0 :(得分:3)

简单的解决方案。创建CData节节点并将其附加到XML。我挣扎着JQuery .text()没有运气。这很棒。

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

答案 1 :(得分:0)

只需设置文字,无需添加<![CDATA[。 CDATA只是在XML中转义文本的方法之一,但由于jQuery为您逃脱,因此您不需要使用其他方法。 &lt;<![CDATA[<]]>一样好。对于XML应用程序,它们是相同的。