Jquery不会在HTML中插入XML格式的CDATA

时间:2013-02-28 09:53:34

标签: jquery html xml parsing cdata

我一直在寻找一个类似的问题,以避免询问已经解决的问题,但我没有找到一个有效的答案,对不起,如果有一个,我还没有看到它。 我正在从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 /&gt;blah, blah, blah

我已经尝试强制添加将内容视为如下文本:

$(container).text($(this));

但后来我得到了:

[Object object]

如果我执行.html(),我会得到与.append()相同的结果......

2 个答案:

答案 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());
});

这对我来说就像一个魅力!