2013-05-06 23 views
-2

我有不同的嵌套的div和輸入的DOM(含值):的JQuery使XML字符串從DOM模型

<div id ="div_id1"> 
<div id ="div_id2"> 
    <table> 
     <tr> 
      <td>input 1:</td> 
      <td><input id="i1" type="text"/></td> 
     </tr> 
     <tr> 
      <td>input 2:</td> 
      <td><input id="i2" type="text"/></td> 
     </tr> 
     <tr> 
      <td>input 3:</td> 
      <td><input id="i3" type="text"/></td> 
     </tr> 
    </table> 
    <div id ="div_id3"> 
     <table> 
      <tr> 
       <td>input 4:</td> 
       <td><input id="i4" type="text"/></td> 
      </tr> 
      <tr> 
       <td>input 5:</td> 
       <td><input id="i5" type="text"/></td> 
      </tr> 
     </table> 
    </div> 
</div> 

如何使根據這種結構遞歸XML字符串? 像這樣:

<div_id1> 
<div_id2> 
    <i1>value 1</i1> 
    <i2>value 2</i2> 
    <i3>value 3</i3> 
    <div_id3> 
     <i4>value 4</i4> 
     <i5>value 5</i5> 
    </div_id3> 
</div_id2> 

UPD:

我想這樣的功能:

function makeXml(nodes) { 
var $result = $('<' + nodes.attr('id') + '>'); 
$.each(nodes, function(i, node) { 
    var nodeId = node.getAttribute('id'); 
    var $el = $('<' + nodeId + '>').text($('#' + nodeId).val()); 
    alert(nodeId + $('#' + nodeId).val()); 
    $el.appendTo($result); 
    var $children = $(node).children(); 
    if ($children.length > 0) { 
     makeXml($children).appendTo($el); 
    } 
}); 
return $result; 

};

但它不能正常工作(不正確處理嵌套的div)。

有沒有人有任何解決方案?

+0

你嘗試過什麼嗎? – 2013-05-06 13:32:29

+0

你能告訴我們你試過什麼,以便我們可以幫助你解決它嗎? Http://www.whathaveyoutried.com – 2013-05-06 13:32:38

+0

你的HTML無效。我建議你在繼續之前解決這個問題。 – Spokey 2013-05-06 13:53:09

回答

0

其中一個選項(創建一個XML字符串):「有沒有人有任何解決方案」

var str = ''; 
function makeXml(obj) { 
    var children = obj.children(); 
    if (children.size() != 0) { 
     $.each(children, function(i, v) { 
      var $val = $(v), id = $val.attr('id'); 
      if (typeof($val.attr('id')) !== "undefined") { 
       str += '<' + id + '>' + $('#' + id).val(); 
       makeXml($val); 
       str += '</' + id + '>'; 
      } else { 
       makeXml($val); 
      } 
     }); 
    } 
}