我坚持了以下要求,在这里,我必须将所有表数据显示为xml结构化数据,我尝试了以下操作,我正在获取xml结构,但正努力显示具有表头的行数据,如下所示

<rowset>
<row name='SequnceNumber'>
    <row>Item</row>
    <row>Weight</row>
    <row>LableNo</row>
    <row>Unitcost</row>
    <row>Delete</row>
</rowset>
<rowset>
<rowset name='1212121'>
    <Item>test1</Item>
    <Weight>3000</Weight>
    <LableNo>test1</LableNo>
    <Unitcost>test1</Unitcost>
    <Delete>test1</Delete>
</rowset>


我尝试了以下代码,

  $(document).ready(function(){
    $("#idXmlData").click(function(){
        var xmlStart =  "<?xml version=\"1.0\" encoding=\"UTF-8\">";
        var xml = xmlStart;
        $(".mutliple tr").each(function() {
        var cells = $("td", this);
        if (cells.length > 0) {
            xml +="<rowset name='" + cells.eq(0).text() + "'>\n";
            for (var i = 1; i < cells.length; ++i) {
                //var tableHeaders=["SequnceNumber","Item","Weight","LableNo","Unitcost","Delete"];
                //for(var j=0;j<tableHeaders.length;j++){
                    // xml += "\t<"+j+">" + cells.eq(i).text() + "</"+j+">\n";
                    xml += "\t<row>" + cells.eq(i).text() + "</row>\n";
                //}
            }
            xml += "</rowset>\n";
        }
    });
    window.alert(xml);
    });
  });


JS fiddle

最佳答案

如下面的代码所示,如​​果格式化table以在th中包含标头,则会容易一些,因为将标头文本与其他行分开会使事情变得更简单。

这是JS:

$("#idXmlData").click(function(){
    var xmlStart =  "<?xml version=\"1.0\" encoding=\"UTF-8\">";
    var xml = xmlStart;
    var xmlFirstRowSet = "<rowset><row name='";
    var thArray = new Array();
    $('th').each( function(index) {
        thArray[index] = $(this).html();
    });
    xmlFirstRowSet = xmlFirstRowSet + thArray[0] + "'>";
    var headerRowSet='';

    for(var i=1; i< thArray.length; i++) {
      headerRowSet =  headerRowSet + "<row>" + thArray[i] + "</row>";
    }

    headerRowSet = headerRowSet + "</rowset>";
    xmlFirstRowSet = xmlFirstRowSet + headerRowSet;
    var bodyRowSet ='';

    $(".mutliple tbody tr").each(function() {
        bodyRowSet = bodyRowSet + "<rowset name='" + $(this).find('td').html() + "'>";
        $(this).find('td:not(:first-child)').each(function() {
           $td = $(this);
           var tdValue = $(this).html();
           var $th = $td.closest('table').find('th').eq($td.index()).html();
           bodyRowSet = bodyRowSet + "<" + $th + ">" + tdValue + "</" + $th + ">";
        });
        bodyRowSet = bodyRowSet + "</rowset>";
    });

    xml = xmlStart + xmlFirstRowSet + bodyRowSet;
    console.log(xml);
    window.alert(xml);
});


这是工作中的Fiddle

07-24 17:38
查看更多