2012-07-27 64 views
0

您好,我有一些XML解析的問題。所以 - 我想通過數據從一些XML標籤讀取數據。你可以幫我嗎?這是我的代碼。XML按元素獲取數據attr

<data> 
     <element name="name">Zook</element> 
     <element name="image">img/icons/01/zook.png</element> 
    </data> 

和jQuery

$(this).find("element").each(function(){ 
    var name = $(this).attr("name"); 
    $("#div").html('<span>' + name + '</span>') 
}); 
+0

,什麼是目前發生的? – Utkanos 2012-07-27 13:25:48

+0

在輸出中我有名字或圖像,沒有Zook或網址 – Lukas 2012-07-27 13:26:46

+1

編輯了我的答案,你能重新構造你的XML嗎? – ScampDoodle 2012-07-27 13:54:30

回答

1

此示例代碼將提取數據爲您提供:

$.ajax({ 
    type: "GET", 
    url: "path/to/your/xml.xml", 
    dataType: "xml", 
    success: function(xml){ 
    $(xml).find("element").each(function() { 
      var name = $(this).find("name").text(); 
      var image = $(this).find("image").text(); 
      $("#div").html('<span>' + name + '</span>'); 
    }); 
}); 

您需要將目前元素雖然調整你的XML,作爲具有雙重意義。 簡化這個讓你的數據是這樣的:

<data> 
    <element> 
    <image>path/to/img.ext</image> 
    <name>Name</name> 
    </element> 
</data> 

希望這有助於

+0

thx男人,這個作品,它對我來說很好,很多thx – Lukas 2012-07-27 14:38:16

+0

沒問題,很高興它爲你工作。 – ScampDoodle 2012-07-27 15:20:32

1

只需通過這個 Link 它說明你需要:)

$(xml).find("element").each(function() 
{ 
    $("#output").append($(this).attr("name") + "<br />"); 
}); 
+0

有沒有關於標籤名稱解析的信息,只能通過標籤 – Lukas 2012-07-27 13:30:43

+0

看到編輯..你會明白。 – 2012-07-27 13:33:23

+0

相同,我有一個標籤名稱輸出沒有數據 – Lukas 2012-07-27 13:36:03

0
var name = $(this).text(); 

應該讓你的生活更輕鬆的一切

0
$(xml).find("main_menu").each(function() { 
    $(this).find("element").each(function(){ 
     var name = $(this).text(); 
     var image = $(this).text(); 

     $("#carousel_items").append('<span>' + name + '</span><span>' + image + '</span>') 
    }); 
}); 

這是我的代碼看起來像現在

0
$(xml).find("main_menu").each(function() { 
    var name, image; 

    $(this).find("element").each(function() { 
     // make sure they default to what they originally were if null 
     // since one <element> has name other has image 
     name = ($(this).attr('name')) ? $(this).text() : name; 
     image = ($(this).attr('image')) ? $(this).text() : image; 
    }); 

    // Build the items once you've looped through the elements within a <data> section 
    $("#carousel_items").append('<span>' + name + '</span><span>' + image + '</span>') 
});