2012-02-10 15 views
12

मैं एक HTML5 अनुप्रयोग विकसित कर रहा हूं।jQuery पार्सिंग एक्सएमएल: एक विशिष्ट विशेषता के साथ एक तत्व प्राप्त करें

मैं इस तरह एक XML पार्स करने के लिए करना चाहते हैं:

<?xml version="1.0" encoding="utf-8" ?> 
    <cards> 
     ... 
     <card id="3"> 
      <name lang="es"></name> 
      <description lang="es"></description> 
      <name lang="en"></name> 
      <description lang="en"></description> 
     </card> 
     ... 
    </cards> 

मैं नाम और विवरण है कि विशेषता lang = "एन" प्राप्त करना चाहते हैं।

मैं कोड लिखना शुरू, लेकिन मैं इसे कैसे खत्म करने के लिए पता नहीं है:

function loadCards(lang) 
{ 
    $.ajax({ 
     type: "GET", 
     url: 'data/english.xml', 
     dataType: "xml", 
     success:parseCardsXml 
    }); 
} 

function parseCardsXml(xml) 
{ 
    $(xml).find('Card').each(function() 
    { 
     var id = $(this).attr('id'); 
     var name = $(this).find('name'); 
    } 
} 

वैसे, loadCards समारोह एक तर्क है (या पैरामीटर) lang कहा जाता है।

मैं इस तर्क को function parserCardsXml(xml) पर कैसे पारित कर सकता हूं? मैं विशिष्ट विशेषता के साथ नाम और विवरण कैसे प्राप्त कर सकता हूं?

+0

विशेषता चयनकर्ता का उपयोग करें: http://api.jquery.com/category/selectors/ –

उत्तर

15

विशिष्ट प्रश्नों के उत्तर देने के लिए, "मैं इस तर्क को पार्सर कार्ड्स एक्सएमएल (एक्सएमएल) फ़ंक्शन करने के लिए कैसे पास कर सकता हूं?"

function loadCards(lang) 
{ 
    $.ajax({ 
     type: "GET", 
     url: 'data/english.xml', 
     dataType: "xml", 
     success: function (xml) { parseCardsXml(xml, lang); } 
    }); 
} 

और, "मैं एक विशिष्ट विशेषता के साथ नाम और विवरण कैसे प्राप्त कर सकता हूं?"

function parseCardsXml(xml, lang) 
{ 
    var $xml = $(xml), 
     name = $xml.find('name[lang="' + lang + '"]').text(), 
     desc = $xml.find('desc[lang="' + lang + '"]').text(); 
} 
3

$(xml).find('name[lang="en"], description[lang="en"]') चाल करना चाहिए

संपादित करें: अधिक पूरा जवाब

$(xml).find('card').each(function() { 
    var id, name, description; 
    id   = $(this).attr('id'); // or just `this.id` 
    name  = $(this).children('name[lang="en"]').text(); 
    description = $(this).children('description[lang="en"]').text(); 
    // do something with the id, name, and description 
}); 
+0

अपने जवाब के लिए धन्यवाद, लेकिन, मैं कैसे वर नाम और मूल्यों के साथ वर वर्णन नहीं मिला सेट कर सकते हैं? – VansFannel

+0

@VansFannel ने मेरा उत्तर अपडेट किया – Flambino

5
var xml='<cards>\ 
     <card id="3">\ 
      <name lang="es"></name>\ 
      <description lang="es"></description>\ 
      <name lang="en"></name>\ 
      <description lang="en"></description>\ 
     </card></cards>'; 

और jQuery हिस्सा

$(xml).find('Card').each(function(i,j) 
    {   
     console.log($(j).attr("id")); 
     console.log($(j).find("name").attr("lang")); 

    }); 

http://www.jsfiddle.net/VZjmV/6/

संबंधित मुद्दे