我一直在寻找一个类似的问题,以避免询问已经解决的问题,但我没有找到一个有效的答案,对不起,如果有一个,我还没有看到它。 我正在从Jquery读取一个XML文件,xml文件中有一些我特意添加的CDATA内容,并且我希望保留用于格式化目的:
<?xml version="1.0" encoding="UTF-8"?>
<categories>
<description name="whatever">
Blah, blah, blah<![CDATA[<br />]]>blah, blah, blah
</description>
</categories>
阅读之后,我将其附加到div:
$(xml).find('description[name="whatever"]').each(function()
{
$(container).append($(this));
});
我得到的是Jquery看起来像'&lt;'和'&gt;'所以我终于有了:
Blah, blah, blah&l;tbr />blah, blah, blah
我已经尝试强制添加将内容视为如下文本:
$(container).text($(this));
但后来我得到了:
[Object object]
如果我执行.html(),我会得到与.append()相同的结果......
答案 0 :(得分:2)
普通的XML处理器无法知道它们处理的任何内容是来自CDATA
部分;据他们所知,任何CDATA
内容都只是纯文本。因此,当jQuery处理CDATA
的东西时,它不会以与字符串文字中出现的东西不同的方式对待它(事实上,因为jQuery只是DOM
上的一层,所以绝对无法知道它的输入是来自CDATA
部分还是字符串文字,因为DOM
没有做出任何这样的区分。)
答案 1 :(得分:1)
对于将来可能属于同一个洞的人们:
首先,将其声明为XML:
$.get("yourxml.xml", {}, function (data)
{
},'xml');
然后,像文字一样介绍它:
$(xml).find('description[name="whatever"]').each(function()
{
$(container).append($(this).text());
});
这对我来说就像一个魅力!