2015-07-27 3 views
0

Я придерживался нижеследующего требования. Здесь я должен показать все данные таблицы в структурированных данных xml, я попытался с помощью следующего: я получаю структуру 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

ответ

1

Это будет немного легче, если вы форматировать 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

+0

Спасибо за отличное решение! – Rajasekhar

Смежные вопросы