【问题标题】:read XML via jQuery (read the variable)通过 jQuery 读取 XML(读取变量)
【发布时间】:2010-12-10 04:29:44
【问题描述】:

我可以使用 jQuery 直接读取 XML Feed,但是当我使用“console.log”显示返回 XML 文档时,“description”标签在控制台中只显示“#cdata-section”,但它能够显示当我将它们放入 HTML 时的完整内容。输出是一篇文章的完整内容,如下面的“示例内容”。

示例内容:

<p> line 1 line 1 line 1</p>
<p> line 2 line 2 line 2</p>
<img src='..' />
<p> ... ... </p>

现在,如果我使用 jQuery 通过 .ajax 检索它,我将使用一个 'desc' 变量来保存这个 'description' 节点(它保存上面的示例内容),但是我如何读取多少个 'p' 或 'img ' 这个 'desc' 变量中的元素?

我想得到这个'desc'变量中的what元素,我的目标是读取img标签。有办法吗?注意:在放入 HTML 正文之前。

XML:

<channel>​
 <title>​Property​</title>​
 <link>​</link>​
 <lastbuilddate>​Wed, 13 Oct 2010 23:50:51 GMT​</lastbuilddate>​
 <generator>​FeedCreator 1.8.0-dev (info@mypapit.net)​</generator>​
 <atom:link href=​"sample.com" rel=​"self" type=​"application/​rss+xml">​</atom:link>​
 <item>​
  <title>​sample title​</title>​
  <description>​
    #cdata-section
  </description>​
  <pubdate>Wed, 08 Dec 2010 23:04:25 GMT</pubdate>
 </item>​
<channel>​

jQuery:

$.ajax({
 type: "GET",
 url: "http://feed6.xml",
 dataType: "xml",
 success: function(xml) {
  console.log(xml);
  $(xml).find('channel').each(function(){
   $(this).find('item').each(function(){
   var desc = $(this).find('description').text();
   console.log(desc);
  });
 });
 }
});

【问题讨论】:

    标签: jquery xml parsing variables cdata


    【解决方案1】:

    试试这个.....

    $(xml).find('channel').each(function(){
       $(this).find('item').each(function(){
          var desc = $(this).find('description').text();  
          var newTag =document.createElement("div");  
          newTag.innerHTML = desc;
          var imgTag = newTag.getElementsByTagName("img");
       });
    });
    

    【讨论】:

    • 是的,我认为它有效,但是如果我在内容中有多个 img 标签,我应该如何获得第一个?
    • 如果你有多个图像标签,那么 newTag.getElementsByTagName("img"), 将返回数组......所以只需使用 for 循环迭代它,你将获得所有 img 标签......如果你有 img 以外的标签,那么你可以像我为 img 标签一样的方式获取这些标签.....如果你发现它对你有用,请接受这个答案......谢谢
    【解决方案2】:

    看来问题出在这一行:

    var desc = $(this).find('description').text();
    

    不要在该行的末尾使用 .text() ,而是尝试 .html() 然后搜索您想要的标签:

    var desc = $(this).find('description').html();
    var theImageYouwant = desc.find('img');
    

    【讨论】:

      【解决方案3】:

      $(this).find("description"); 将返回一个 jquery 包装的 XML 片段。

      假设内容不是 cdata 包装的,您可以像使用 html 一样使用 jquery 遍历。

      e.g. $(this).find("description").find("p").each(function() { // whatever });
      

      如果它是 cdata 包装的,那么不幸的是 jQuery 不支持 html() 之类的 xml 函数,但是您可以解开 jquery 对象,然后重新包装描述 xml 节点。像这样的:

      var content = $($(this).find("description")[0].nodeValue);
      

      【讨论】:

        猜你喜欢
        • 2011-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-22
        • 1970-01-01
        相关资源
        最近更新 更多