使用javascript从Html List LI生成xml

时间:2015-07-08 08:18:44

标签: javascript jquery html xml-parsing

我有一个html列表视图,其中包含自定义属性

<li class="horizontal ui-draggable ui-draggable-handle" 
 isstaticvalue="true" displayname="Default_Value" formuladetailid="" 
 isuserdefined="true" style="display: inline;">DefaultValue</li>

我想为listview中的每个li创建一个xml,并将自定义属性设置为xml元素。我需要这个xml作为后端程序的参数。

示例:

<array xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><formula>  
  <displayname>Default_Value</displayname>
  <isuserdefined>true</isuserdefined>
  <isstaticvalue>true</isstaticvalue>
</formula></array>

1 个答案:

答案 0 :(得分:0)

vanilla Javascript中的解决方案

var ul = document.getElementsByTagName('ul')[0];
var lis = ul.childNodes;
var IGNORE_ATTRS = ["style","class"];

var xml = "<array xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n";

for(var i=0;i<lis.length;i++){
    var li = lis[i];
    if(li.nodeName.toLowerCase()=="li"){
        xml+="  <formula>\n";
        for (var j = 0, atts = li.attributes, n = atts.length, arr = []; j < n; j++){
            var key = atts[j].nodeName;
            var value = atts[j].nodeValue;
            if(IGNORE_ATTRS.indexOf(key)!=-1) continue;
            if(value == "") continue;
            xml+= "    <"+key+">"+value+"</"+key+">\n";
        }

        xml+="  </formula>\n";
    }
}

xml+= "</array>";

fiddle here