2011-12-08 106 views
0

我读过〜50个不同的线程寻找答案,我已经了解了一些关于jquery和xml,但我还没有能够翻译任何它到我在做什么或者找到有相同问题的人。我试图获取CDATA的数据,并将其写入简单的HTML表格中,其中'id'字段作为列标题。阅读<CDATA>内容通过jquery

使用一个例子,我有以下XML:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<catalog> 
    <cd> 
    <disk id="artist"><![CDATA[Mikey]]></disk> 
    <disk id="title"><![CDATA[Greatest hits]]></disk> 
    <disk id="year"><![CDATA[8675309]]></disk> 
    </cd> 
    <cd> 
    . 
    . 

以下代码:

$(document).ready(function() { 
    $.ajax({ 
     type: "GET", 
     url: "catalog.xml", 
     dataType: "xml", 
     success: xmlParser 
    }); 
    }); 

function xmlParser(xml) { 
    $(xml).find("cd").each(function()({ 
     $(".main").append('<div class="book"><div class="title">' + 
     $(this).find("disk:first").text() + '</div><div class="description">' + 
     $(this).find("disk:last").text() + '</div>'); 
    }); 
    } 

我可以通过这种方法得到的第一个和最后一个文本,但我可以”在两者之间得到任何东西,并且这不允许记录中的任何“缺失”字段。我想获取与'id'字段值相关联的CDATA内容,但一直未能通过jquery找到一种方法。任何帮助,将不胜感激!!谢谢!

+2

检查:http://stackoverflow.com/questions/652159/parsing-xml-with-cdata-with-jquery –

+0

您是否尝试过使用jQuery的属性选择器来访问由ID的元素? (例如:'$(this).find('disk [id =“artist”]')。get(0).firstChild.nodeValue;' – Aaron

回答

0
function xmlParser(xml) { 
    var parts = ['artist', 'title', 'year']; 

    $("cd", xml).each(function() { 
     var $book = $('<div class="book">'); 

     for (var i=0; i<parts.length; i++) { 
      $("<div>", { 
       'class': parts[i], 
       'title': parts[i], 
       'text' : $("disk[id="+parts[i]+"]", this).text() 
      }).appendTo($book); 
     } 
     $book.appendTo(".main"); 
    }); 
}