【问题标题】:Jquery doesn't insert literally CDATA from XML inside htmlJquery 不会在 html 中从 XML 中插入 CDATA
【发布时间】:2013-02-14 11:01:03
【问题描述】:

我一直在寻找一个类似的问题,以避免提出已经解决的问题,但我还没有找到适合我的有效答案,抱歉,如果有,我还没有看到。 我正在从 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 似乎避开了 '' 所以我终于有了:

Blah, blah, blah&l;tbr /&gt;blah, blah, blah

我已经尝试强制附加将内容视为文本,如下所示:

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

然后我得到:

[Object object]

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

【问题讨论】:

    标签: jquery html xml parsing cdata


    【解决方案1】:

    普通的 XML 处理器无法知道他们处理的任何内容是否来自CDATA 部分;据他们所知,任何CDATA 内容都只是纯文本。因此,当 jQuery 处理 CDATA 的东西时,它不会与出现在字符串文字中的东西有任何不同的处理(事实上,由于 jQuery 只是 DOM 上的一层,它绝对没有办法知道它的输入是来自CDATA 部分还是字符串文字,因为DOM 没有做出任何这样的区分)。

    【讨论】:

    • 这是一个很好的知识丸,充满意义,谢谢你的信息,那么我应该改变我的问题,我怎样才能在 XML 中插入 HTML 以便被 Jquery 理解为 HTML?
    【解决方案2】:

    对于未来可能陷入同一个坑的人:

    首先,将其声明为 XML:

    $.get("yourxml.xml", {}, function (data) 
    {            
    
    },'xml');
    

    然后,像文字一样介绍它:

    $(xml).find('description[name="whatever"]').each(function()
    {       
        $(container).append($(this).text());
    });
    

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

    【讨论】:

    • 如果它应该是 HTML,你应该使用 .html()... :-?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多