将 Table 数据转换为 xml 结构化数据

Converting Table data to the xml structured data

我坚持了以下要求,在这里我必须将所有 table 数据显示为 xml 结构化数据,我尝试了以下内容,我得到了 xml 结构但努力用 table headers 显示行数据,如下所示

<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 格式化为包含 header 和 th 会更容易一些,如您在以下代码中所见,因为分隔 header 文本来自其他行将使事情变得更简单。

这是 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