Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jquery或javascript解析cdata中的html_Javascript_Jquery_Cdata - Fatal编程技术网

使用jquery或javascript解析cdata中的html

使用jquery或javascript解析cdata中的html,javascript,jquery,cdata,Javascript,Jquery,Cdata,我得到了一个类似这样的网站提要 <rss...> <title> some title </title> <content> <![CDATA[ <div>this tag is ignored<div> who took the cookie in the cookie jar!? ]]> </content> </rss> 一些头衔 忽略

我得到了一个类似这样的网站提要

<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()获取内容部分时,

它实际上忽略了整个
这个标记被忽略了
部分。有没有办法使用javascript或jquery获取CDATA中的所有内容?

很可能jquery没有将标记解析为XML。尝试显式调用:

jQuery并不擅长从字符串解析XML文档。最好使用浏览器的原生DOM解析器。然后jQuery可以更好地处理解析后的XML文档;否则,我相信它会像XML一样使用它,从而产生奇怪的结果

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

编辑:根据另一个答案,
$.parseXML
可能是一个更好的选项,因为它应该与其他浏览器一起使用,但您必须以与上面类似的方式使用它,因为结果是XML文档而不是jQuery对象

$xml = $($.parseXML(xml));
底线:

xmlDoc.getElementsByTagName("content")[0].childNodes[0].nodeValue
此工作代码片段使用jquery加载xml,然后获取第四个出现的内容标记(包含CDATA)


jQuery中CDATA中的文本可以通过获取第一个childNodes数据来检索:

!$.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; }
}});

从URL读取数据,txt包含来自CDATA的信息,CDATA意味着对解析器隐藏数据,这样就不会将数据作为HTML解析到DOM中。我试图理解为什么您的html隐藏在CDATA中?你能把它放进ajax吗?你试过用
html()
而不是
text()
?你说得对,我完全忘记了在
$周围对
$()
的额外调用。parseXML()
。我更新了我的答案,谢谢提醒:)
var req = new AjaxRequest(); 
req.setMethod("POST"); 
...
req.loadXMLDoc(linkString, paramString);
var htmlContent = req.getResponse().responseXML.getElementsByTagName('content').item(3).childNodes[0].nodeValue;
!$.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; }
}});