js 将xml转换为table表格简单代码实例

快乐打工仔 分类:实例代码

下面分享一段代码实例,它实现了将xml文件转换为table表格格式的功能。

这里不介绍它的实现过程,感兴趣的朋友可以自己做一下分析。

代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.51texiao.cn/" />
<title>前端教程网</title>
</head>
<body>
<script type="text/javascript">
function ConvertToTable(targetNode){
  // if the targetNode is xmlNode this line must be removed
  // i couldnt find a way to parse xml string to xml node
  // so i parse xml string to xml document
  targetNode = targetNode.childNodes[0];
  // first we need to create headers
  var columnCount = targetNode.childNodes[0].childNodes.length;
  var rowCount = targetNode.childNodes.length
  // name for the table
  var myTable = document.createElement("table");
  myTable.border = 1;
  myTable.borderColor ="green";
  var firstRow = myTable.insertRow();
  var firstCell = firstRow.insertCell();
  firstCell.colSpan = columnCount;
  firstCell.innerHTML = targetNode.nodeName;
  // name for the columns
  var secondRow = myTable.insertRow();
  for(var i=0;i<columnCount;i++){
    var newCell = secondRow.insertCell();
    newCell.innerHTML = targetNode.childNodes[0].childNodes[i].nodeName;
  }
  // now fill the rows with data
  for(var i2=0;i2<rowCount;i2++){
    var newRow = myTable.insertRow();
    for(var j=0;j<columnCount;j++){
      var newCell = newRow.insertCell();
      newCell.innerHTML = targetNode.childNodes[i2].childNodes[j].firstChild.nodeValue;
    }
  }
  //i prefer to send it as string instead of a table object
  return myTable.outerHTML;
}
function loadXmlDocFromString(text){
  //Internet Explorer
  try {
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async="false";
    xmlDoc.loadXML(text);
    return xmlDoc;
  } 
  catch(e){
        // Firefox, Mozilla, Opera, etc.
    try{
      parser=new DOMParser();
      xmlDoc=parser.parseFromString(text,"text/xml");
      return xmlDoc;
    }
    catch(e){
      alert(e.message);
      return;
    }
  }
}
var myXml = '<TableName> \
  <firstRow> \
  <field1>1</field1> \
  <field2>2</field2> \
  </firstRow> \
  <firstRow> \
  <field1>3</field1> \
  <field2>4</field2> \
  </firstRow> \
 </TableName>';
 var myDoc = loadXmlDocFromString(myXml);
document.write( ConvertToTable(myDoc));
</script>
</body>
</html>

回复

我来回复
  • 暂无回复内容