从XML中提取数据并将其放在HTML表中

时间:2014-09-03 05:30:22

标签: javascript jquery xml

我不是编码专家,所以需要你的帮助。

我有一个XML文件作为字符串变量存储在代码中显示的$(xml)变量中。

我能够解析这个XML文件并逐行提取数据,但问题是提取的数据在两个值之间没有空间。

另外,我希望这些提取的数据以表格格式 5x5 。使用JavaScript / jQuery

由于

var xmlString = $(xml).find("table_cell_value1,table_cell_value2,table_cell_value3,table_cell_value4,table_cell_value5").text();

1 个答案:

答案 0 :(得分:0)

好了,现在,一步一步..首先你的xml格式,它应该是以下格式(它已经是我猜):

<root>
    <asset>
        <name></name>
        ...
    </asset>
    <asset>
        <name></name>
        ...
    </asset>
</root>

在我的解决方案中,我创建了这样的XML:

    var xml = "";
    xml+= '<?xml version= "1.0" encoding="UTF-8"?>';
    xml+= '<root>';
        xml += '<asset>';    
        var index1 = "111";
        xml += '<name>'+index1+'';
        xml += '</name>';

        var index2 = '111';
        xml += '<company>'+index2+'';
        xml += '</company>';

        var index3 = '111'
        xml += '<country>'+index3+'';
        xml += '</country>';

        var index4 = '111'
        xml += '<fname>'+index4+'';
        xml += '</fname>';

        var index5 = '111';
        xml += '<lname>'+index5+'';
        xml += '</lname>';
        xml += '</asset>';

        xml += '<asset>';    
        var index1 = "222";
        xml += '<name>'+index1+'';
        xml += '</name>';

        var index2 = '222';
        xml += '<company>'+index2+'';
        xml += '</company>';

        var index3 = '222'
        xml += '<country>'+index3+'';
        xml += '</country>';

        var index4 = '222'
        xml += '<fname>'+index4+'';
        xml += '</fname>';

        var index5 = '222';
        xml += '<lname>'+index5+'';
        xml += '</lname>';
        xml += '</asset>';      
    xml+= '</root>';

所以它有两个记录,111,111,111,111,111和222,222,222,222,222。

接下来是XML Parser,它将为您解析此XML并填充表。我使用过DOMParser。

外部循环将持续到资产标签(您的记录)的长度,然后在该循​​环中我创建行并将它们添加到表中...

for(var i=0; i<xmlDoc.getElementsByTagName("asset").length; i++) {
    html += '<tr><td>' + xmlDoc.getElementsByTagName("asset")[i].childNodes[0].innerHTML + '</td><td>' + xmlDoc.getElementsByTagName("asset")[i].childNodes[1].innerHTML + '</td><td>' + xmlDoc.getElementsByTagName("asset")[i].childNodes[2].innerHTML + '</td><td>' + xmlDoc.getElementsByTagName("asset")[i].childNodes[3].innerHTML + '</td><td>' + xmlDoc.getElementsByTagName("asset")[i].childNodes[4].innerHTML + '</td></tr>';
    //row construction ends here
    $('#tb tr:last').after(html); //adding row to the table.
    html = "";  //emptying this string after one row has been added to avoid multiple rows to be added in next iteration       
}

上面的循环将运行2次(因为我的xml有2条记录)并将逐行填充表格,第一行:111,111,111,111,111和第二行:222,222 ,222,222,222。

<强> See the working DEMO here

如果您有任何疑惑,请随时提出。