通过jquery </cdata>读取<cdata>内容

时间:2011-12-08 18:13:15

标签: jquery xml cdata

我已经在SO上阅读了大约50个不同的线程,寻找答案,我已经学习了一些关于jquery和xml的知识,但我还是无法将其中任何一个转换为我正在做的事情或找到任何有相同问题的人。我正在尝试获取CDATA的数据并将其写入简单的HTML表格中,并将“id”字段作为列标题。

使用示例,我有以下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找到这样做的方法。任何帮助,将不胜感激!!谢谢!

1 个答案:

答案 0 :(得分: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");
    });
}