13

私はこのようなウェブサイトのフィードを取得しています

<rss...>
    <title> some title </title>
    <content>
         <![CDATA[ <div>this tag is ignored<div> who took the cookie in the cookie jar!?  ]]>
    </content>
</rss>

cdata のコンテンツ全体を html に表示する必要があります。私はjquery 1.9.1を使用していますが、を使用してコンテンツ部分を取得すると $(xml).find('rss content').text()、実際には<div>this tag is ignored<div>部分全体が無視されます。javascriptまたはjqueryを使用してCDATA内のすべてを取得する方法はありますか?

4

4 に答える 4

6

マークアップが jQuery によって XML として解析されない可能性があります。$.parseXML()を明示的に呼び出してみてください:

var contentText = $($.parseXML(xml)).find("rss content").text();
于 2013-02-19T15:29:00.203 に答える
4

結論:

xmlDoc.getElementsByTagName("content")[0].childNodes[0].nodeValue

作業コードからのこのスニペットは、jquery を使用して xml をロードし、コンテンツ タグ (CDATA を含む) の 4 番目の出現を取得します。

var req = new AjaxRequest(); 
req.setMethod("POST"); 
...
req.loadXMLDoc(linkString, paramString);
var htmlContent = req.getResponse().responseXML.getElementsByTagName('content').item(3).childNodes[0].nodeValue;
于 2013-12-06T16:14:43.470 に答える
2

jQuery は、文字列から XML ドキュメントを解析するのに最適ではありません。ブラウザのネイティブ DOM パーサーを使用することをお勧めします。jQuery は、解析された XML ドキュメントをより適切に処理できます。そうしないと、奇妙な結果を生成する XML のように動作しようとすると思います。

$xml = $((new DOMParser).parseFromString(xml, "text/xml"));

http://jsfiddle.net/ExplosionPIlls/2MJt9/

編集: 他の回答に基づいて、他$.parseXMLのブラウザーで動作するはずなので、おそらくより良いオプションですが、結果は jQuery オブジェクトではなく XML ドキュメントであるため、上記と同様の方法で使用する必要があります。

$xml = $($.parseXML(xml));
于 2013-02-19T15:32:04.460 に答える