javascript - 使用Jquery解析多个xml文件

标签 javascript jquery xml parsing

我有多个 xml 文件,我正在尝试使用 JQuery 解析它们。到目前为止,我只是通过单独解析每个文件才取得成功。我对此很陌生,而且我的代码非常长且重复。我将不胜感激任何缩小规模的帮助。这是我的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 中。必须有更好的方法来做到这一点。

最佳答案

将其设为函数调用

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

关于javascript - 使用Jquery解析多个xml文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10950650/

相关文章:

xml - 无法生成类,因为找不到具有复杂类型的顶级元素

javascript - 发布 Ajax 并在 Node 中获取空对象

javascript - JQUERY/JAVASCRIPT 不能在移动设备上运行

jquery - 为什么 html() 会丢失类分配?

javascript - 使用 Jquery 在悬停时删除/添加边框

javascript - 如何最好地在同一页面上显示不同文本元素的随机样式?

java - 对 JTable 进行递归调用时出现 ArrayIndexOutOfBoundsException

javascript - Jquery preventDefault 仅用于父链接

javascript - 从 AJAX 调用中获取响应 - 接受回调

xml - ActionScript - 将数据分配给对象数组后处理 XML?