如何在XML文件中进行AJAX并解析值?

问题描述:

我有以下的AJAX和XML代码。您可以看到我尝试设置的值。我只是不知道如何去解析XML文件来设置这些变量。如何在XML文件中进行AJAX并解析值?

AJAX代码:

$.ajax({ 
      url: 'PATH TO XML', 
      dataType: ($.browser.msie) ? "text" : "xml", 
      success: function(data) { 
         var context = default; 
         if (...) { 
          context = not-default; 
         } 
        } 

XML代码:

<messages> 
<message id="id1" context="default"> 
     <content> 

      <p>Default HTML</p> 


     </content> 
</message> 
<message id="id2" context="not-default"> 
     <content> 

     <p>Not Default HTML</p> 

     </content> 
</message> 
</messages> 

这很简单:

$(yourXmlFileContents); 

从这里出发,只需使用.find()方法来选择ELEM经济需求:

$(yourXmlFileContents).find('foo[context=bar]'); 

注:如果您提供的文件的内容作为一个字符串jQuery的不会把它解释为XML,但作为HTML来代替。

+0

非常感谢!我没有意识到.find是所有需要的!并感谢信仰的例子! – 2011-04-10 22:28:06

+0

请注意,如果提供的值是字符串,jQuery的$()函数不会解析XML。它假设字符串是HTML,并将该字符串指定为HTML DOM元素的'innerHTML'属性,该元素通常不适用于XML。如果提供的值是一个XML文档,一切都很好。 – 2011-04-10 23:17:07

+0

哎呀。感谢您的信息,@Tim。 – Blender 2011-04-10 23:21:01

See this example

$(document).ready(function() { 
    $.ajax({ 
     type: "GET", 
     dataType: "xml", 
     url: "XMLFile.xml", 
     success: function (xml) { 
      $(xml).find('type').each(function() { // find all "type" tag in XML 
       if ($(this).text() == 'administrative_area_level_3') { // in here $(this) is our "type" tag 
        var result = $(this).parent().find('long_name').text(); // get result 
        $('#result').html('The Result is: ' + result) // write result 
       } 
      }) 
     } 
    }) 
}) 
+1

虽然这个链接可能回答这个问题,但最好在这里包含答案的基本部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – Hamish 2012-08-12 23:16:53

+0

@Hamish你是对的。谢谢! – Fatih 2012-08-15 22:47:21

如果设置dataType为“XML”,提供给您的success功能将是一个XML文档对象,并将其传递到主jQuery函数会做你想要什么样的价值。如果你有XML作为一个字符串,而不是,你需要将它传递jQuery的parseXML()方法(新版本1.5):

var xmlStr = "<foo>bar</foo>"; 
var xmlDoc = $.parseXML(xmlStr); 
$xml = $(xmlDoc); 
alert($xml.find("foo").text()); // Alerts "bar"