[英]parse html inside cdata using jquery or javascript
我收到的網站Feed看起來像這樣
<rss...>
<title> some title </title>
<content>
<![CDATA[ <div>this tag is ignored<div> who took the cookie in the cookie jar!? ]]>
</content>
</rss>
我需要在html中顯示cdata的全部內容。 我正在使用jquery 1.9.1,當我使用$(xml).find('rss content').text()
獲取內容部分時,它實際上忽略了整個<div>this tag is ignored<div>
部分。 有沒有辦法使用javascript或jquery獲取CDATA內的所有內容?
有可能你的標記沒有被jQuery解析為XML。 嘗試顯式調用$ .parseXML() :
var contentText = $($.parseXML(xml)).find("rss content").text();
底線:
xmlDoc.getElementsByTagName("content")[0].childNodes[0].nodeValue
來自工作代碼的這段代碼使用jquery加載xml,然后獲取內容標記的第4次出現(包含CDATA)
var req = new AjaxRequest();
req.setMethod("POST");
...
req.loadXMLDoc(linkString, paramString);
var htmlContent = req.getResponse().responseXML.getElementsByTagName('content').item(3).childNodes[0].nodeValue;
jQuery不是從字符串解析XML文檔的最佳選擇 。 最好使用瀏覽器的原生DOM Parser。 然后jQuery可以更好地處理解析的XML文檔; 否則我相信它會嘗試像XML那樣產生奇怪的結果。
$xml = $((new DOMParser).parseFromString(xml, "text/xml"));
http://jsfiddle.net/ExplosionPIlls/2MJt9/
編輯:基於另一個答案, $.parseXML
可能是一個更好的選擇,因為它應該與其他瀏覽器一起使用,但你必須以與上面類似的方式使用它,因為結果是XML文檔而不是jQuery對象。
$xml = $($.parseXML(xml));
可以通過獲取childNodes數據的第一個來檢索jQuery中CDATA的文本:
!$.ajax(YOUR_URL,{
dataType: 'xml',
success: function (dataR, textStatus, jqXHR){
var rrsobj = $(dataR).find('rss');
if(rrsobj ){
desc = $(rrsobj [0]).children('content');
if(desc)
var txt = desc[0].childNodes[0].data; }
}});
其中dataR是從YOUR_URL讀取的,而txt包含來自CDATA的信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.