[英]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.