jquery 设置 xml cdata

发布于 2024-10-03 15:04:48 字数 933 浏览 6 评论 0原文

我在使用 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 并将其转换为字符串以将其发布到服务器。我知道我可以只发布字段,但我有一些充分的理由将其放入 xml 文档中。一切都工作得很好,但如果用户使用特殊字符进行一些输入,则不然。 这就是我设置节点值的方式(在本例中为“描述节点”),

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

因此该节点曾经是 cdata,但 .text() 函数将其删除。我也尝试过这个:

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

这也不起作用,因为 .text() 更改 <到&gt;

有人有解决办法吗?我的灵感消失了......

谢谢, 西蒙

I have a problem setting a cdata node with jquery. Getting cdata is easily done with the .text() function, but if I use .text('jquery > handy') it doesn't create a cdata node.

This is my procecure:
I get form data in xml to load in a form
something like this:

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

I use cdata nodes because a field can contain all kinds of special chars.
Then I load the data in the form by getting the node content with .text()

If the user posts the form, I update the xml and convert it to a sting to post it to the server. I know I could just post the fields, but I have some good reasons to put it in an xml document. Everything works very well, but not if the user does some input with special characters.
This is how i set the value of the node (in this example the "descriptioon node")

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

So the node used to be cdata, but the .text() function removes that. I alo tried this:

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

This also doesn't work because .text() changes < to >

does anyone has a solution? My inspiration is gone.....

Thanks,
Simon

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鱼忆七猫命九 2024-10-10 15:04:48

简单的解决方案。创建一个 CData 节节点并将其附加到您的 XML。我在 JQuery .text() 上苦苦挣扎,但没有运气。这效果太棒了。

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

Simple solution. Create a CData Section Node and Append it to your XML. I struggled with the JQuery .text() with no luck. This worked fantastic.

            var cDataSection = self.xmlDocument.createCDATASection(text);
            $(element).empty();
            $(element).append(cDataSection);
静谧幽蓝 2024-10-10 15:04:48

只需设置文本,无需添加 。 CDATA 只是对 XML 中的文本进行转义的方法之一,但由于 jQuery 会为您转义,因此您无需使用其他方法。 < 一样好。对于 XML 应用程序来说,它们是相同的。

Just set text, without adding <![CDATA[. CDATA is just one of the ways to escape text in XML, but since jQuery escapes for you, you don't need to use another method. < is just as good as <![CDATA[<]]>. For XML applications they're identical.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文