使用jQuery提取CDATA

时间:2010-03-31 14:34:29

标签: jquery xml cdata

之前有人问过这个问题,但答案对我来说似乎不起作用。我正在从本地XML文件输出信息,但是没有输出描述元素,因为它包含在CDATA中 - 如果我删除了CDATA部分,那么一切正常。

这是我的代码:

$(document).ready(
  function() {
    $.get('test.xml',
      function($info) {
        objInfo = $($info);

        objInfo.find('item').slice(0,5).each(
          function() {
            var Guid = $(this).find('guid').text();
            var Title = $(this).find('title').text();
            var Description = $(this).find('description').text();
            $('#Content').append(
              "<p><a href='" + Guid + "'>" + 
              Title + "</a>&nbsp;" +
              Description +
              "</p>"
            )
          }
        );

      },
      'xml'
    );
  }
)

知道如何成功提取包含在CDATA中的描述信息吗?

谢谢 -

乔治

1 个答案:

答案 0 :(得分:0)

我在最后几个小时花了很多相似的东西,对我来说有用的是在发送/接收方明确地将内容类型设置为“text / xml”和“xml”。即,

服务器端:

...
response.setContentType("text/xml");
...

客户端/ jQuery方面:

... 
$.ajax({
  type: 'POST',
  url: 'myAjaxHandler',
  processData: false,
  data: message,
  contentType: 'text/xml', 
  dataType: 'xml',
  success: function(xml, textStatus) {
   var myVar= $(xml).find('interestingNode').text();
   $('#someId').append(myVar); 
  },
  error: function(xhr, textStatus, errorThrown) {
   ...
  }
 });

...

不确定两者是否都是必需的。

从文档中,如果你没有在任何地方指定内容类型,jQuery将尝试“猜测”你发送的内容,在我的情况下,我在CDATA中嵌入了HTML。