【问题标题】:Parsing multiple xml files with Jquery使用 Jquery 解析多个 xml 文件
【发布时间】:2012-06-08 14:19:58
【问题描述】:

我有多个要使用 JQuery 解析的 xml 文件。到目前为止,我只是通过单独解析每个文件才获得成功。我是新手,我的代码很长而且重复。我将不胜感激任何缩小它的帮助。这是我的js:

$.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 中。必须有更好的方法来做到这一点。

【问题讨论】:

    标签: javascript jquery xml parsing


    【解决方案1】:

    让它成为一个函数调用

    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");
    

    你可以通过去掉 if 检查并做一个循环来使它更小

    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");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 2012-08-25
      • 1970-01-01
      • 2014-07-06
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      相关资源
      最近更新 更多