1

すでに解決済みの質問を避けるために同様の質問を探していましたが、有効な答えが見つかりませんでした。答えがあれば申し訳ありませんが、見ていません。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()と同じ結果が得られます。

4

2 に答える 2

2

CDATA通常の XML プロセッサには、処理するものがセクションからのものかどうかを知る方法がありません。彼らが知る限り、CDATAコンテンツはプレーン テキストにすぎません。そのため、jQueryCDATAが何かを処理するとき、文字列リテラルに現れたものとまったく異なる方法で処理することはありません (実際、jQuery は単純に 上のレイヤーであるためDOM、入力が来たかどうかを知る方法はまったくありません)。CDATAセクションまたは文字列リテラルから ( はそのようDOMな区別をしないため)。

于 2013-02-28T10:22:58.190 に答える
1

将来同じ穴に落ちるかもしれない人々のために:

まず、XML として宣言します。

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

},'xml');

その後、テキストのように紹介します。

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

これは私にとって魅力のように機能しています!

于 2013-02-28T16:41:41.983 に答える