2012-06-08 101 views
0

我有多個xml文件,我試圖用JQuery解析。到目前爲止,我只通過分別解析每個文件而獲得成功。我是新來的,我的代碼非常長且重複。我會很感激任何幫助縮小它。這裏是我的JS:用Jquery解析多個xml文件

$.ajax({ 
    type: "GET", 
    url: "docs/doc1.xml", 
    dataType: "xml", 
    success: parseXml1 
}); 

$.ajax({ 
    type: "GET", 
    url: "docs/doc2.xml", 
    dataType: "xml", 
    success: parseXml2 
}); 
$.ajax({ 
    type: "GET", 
    url: "docs/doc3.xml", 
    dataType: "xml", 
    success: parseXml3 
}); 
function parseXml1(xml){ 
    var gen = $(xml).find("subsystem").eq(0); 
    var title = gen.find("title").text(); 
    var text = gen.find("text").text(); 
    $("#Title01").html(title); 
    $("#Text01").html(text); 
}; 

function parseXml2(xml){ 
    var gen = $(xml).find("subsystem").eq(0); 
    var title = gen.find("title").text(); 
    var text = gen.find("text").text(); 
    $("#Title02").html(title); 
    $("#Text02").html(text); 

    var sys = $(xml).find("subsystem").eq(1); 
    var title = sys.find("title").text(); 
    var text = sys.find("text").text(); 
    $("#Title02-1").html(title); 
    $("#Text02-1").html(text); 
}; 

function parseXml3(xml){ 
    var gen = $(xml).find("subsystem").eq(0); 
    var title = gen.find("title").text(); 
    var text = gen.find("text").text(); 
    $("#Title03").html(title); 
    $("#Text03").html(text); 

    var sys = $(xml).find("subsystem").eq(1); 
    var title = sys.find("title").text(); 
    var text = sys.find("text").text(); 
    $("#Title03-1").html(title); 
    $("#Text03-1").html(text); 
}; 

而且我的XML設置如下:

<root> 
    <subsystem>This is information 1</subsystem> 
    <subsystem>This is information 2</subsystem> 
</root> 

所以我有沒有屬性,我試圖通過各一個XML文件中訪問一個多個節點。然後,我試圖將該文本放入HTML頁面的div中。必須有更好的方法來做到這一點。

回答

4

使它成爲一個函數調用

function parseFile(path, titleId, textId) { 

    function parseXml(xml){ 
     var subSystems = $(xml).find("subsystem"); 
     var gen = subSystems.eq(0); 
     var title = gen.find("title").text(); 
     var text = gen.find("text").text(); 
     $("#" + titleId).html(title); 
     $("#" + textId).html(text); 
     if (subSystems.length===2) { 
      var sys = subSystems.eq(1); 
      var title = sys.find("title").text(); 
      var text = sys.find("text").text(); 
      $("#" + titleId + "-1").html(title); 
      $("#" + textId + "-1").html(text); 
     } 
    }; 

    $.ajax({ 
     type: "GET", 
     url: path, 
     dataType: "xml", 
     success: parseXml 
    }); 
} 

parseFile("docs/doc1.xml", "Title01", "Text01"); 
parseFile("docs/doc2.xml", "Title02", "Text02"); 
parseFile("docs/doc3.xml", "Title03", "Text03"); 

,如果檢查,並做一個循環

function parseFile(path, titleId, textId) { 

    function parseXml(xml){ 

     $(xml).find("subsystem").each( 
      function(ind) { 
       var gen = jQuery(this); 
       var title = gen.find("title").text(); 
       var text = gen.find("text").text(); 
       var ext = ind===0 ? "" : "-" + ind; 
       $("#" + titleId + ext).html(title); 
       $("#" + textId + ext).html(text); 
      } 
     ); 
    }; 

    $.ajax({ 
     type: "GET", 
     url: path, 
     dataType: "xml", 
     success: parseXml 
    }); 
} 

parseFile("docs/doc1.xml", "Title01", "Text01"); 
parseFile("docs/doc2.xml", "Title02", "Text02"); 
parseFile("docs/doc3.xml", "Title03", "Text03"); 
+0

它的工作原理,你可以把它縮小,通過擺脫的那個!非常感謝!我向你的腳本天才屈服 – user1444721