Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 解析XML代码并创建表到长度标记_Javascript_Html_Xml - Fatal编程技术网

Javascript 解析XML代码并创建表到长度标记

Javascript 解析XML代码并创建表到长度标记,javascript,html,xml,Javascript,Html,Xml,我已经创建了一段代码,可以在简单模式下解析XML结构。 以下代码: function crea(l) { for(var i=0; i<l.length;i++) { var nome_nodo = l[i].getElementsByTagName("nome"); var nome = nome_nodo[0].firstChild.nodeValue; var cognome_nodo = l[i].getElemen

我已经创建了一段代码,可以在简单模式下解析XML结构。 以下代码:

function crea(l) 
{
    for(var i=0; i<l.length;i++)
    {
        var nome_nodo = l[i].getElementsByTagName("nome");
        var nome = nome_nodo[0].firstChild.nodeValue;
        var cognome_nodo = l[i].getElementsByTagName("cognome");
        var cognome = cognome_nodo[0].firstChild.nodeValue;
        var materia_nodo  = l[i].getElementsByTagName("materia");
        var materia = materia_nodo[0].firstChild.nodeValue;
        var tipo_nodo = l[i].getElementsByTagName("tipo");
        var tipo = tipo_nodo[0].firstChild.nodeValue;   
    }
}
函数crea(l)
{

对于(var i=0;i当您说您有一个默认结构时,我猜您有一个HTML表,它已经在页面上,或者您需要添加到页面中,但是在这两种情况下,它都有与XML子元素匹配的固定列。在这种情况下,您只需要解析XML,循环XML行,并将行添加到您的因此,我构建了以下示例

var xml = '<?xml version="1.0"?>' + 
'<istituto>' + 
'   <dipendente categoria="Professore">' + 
'    <nome>Gennarino</nome>' +
'        <cognome>Divi</cognome>' +
'        <materia>Sistemi e reti, tec.prog.sist.inf.te.</materia>' +
'        <tipo>Professore</tipo>' +
'    </dipendente>' +
'    <dipendente categoria="Professore">' +
'        <nome>Luca</nome>' +
'        <cognome>Salza</cognome>' +
'        <materia>Sistemi e reti, gest.prg.organ.d\'imp,tec.prog.sist.inf.te</materia>' +
'        <tipo>Professore</tipo>' +
'    </dipendente>' +
'</istituto>';


var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xml, "text/xml");

var rows = xmlDoc.getElementsByTagName("dipendente");
var tableBody = document.querySelector("tbody");

createTabella(tableBody, rows);

function createTabella(table, xmlRows){
   for (var i=0; i < xmlRows.length; i++){
    var tr = document.createElement("tr");
    tr.appendChild(buildTD(xmlRows[i], "nome"));
    tr.appendChild(buildTD(xmlRows[i], "cognome"));
    tr.appendChild(buildTD(xmlRows[i], "materia"));
    tr.appendChild(buildTD(xmlRows[i], "tipo"));
    tableBody.appendChild(tr);
  } 
}

function buildTD(parentElement, elementName){
  var el = parentElement.getElementsByTagName(elementName)[0];
  var td = document.createElement("td");
  td.textContent = el.textContent; 
  return td;
}
var xml=''+
'' + 
'   ' + 
“Gennarino”+
“迪维”+
“系统集成,技术进步系统集成。”+
“教授”+
'    ' +
'    ' +
“卢卡”+
“萨尔扎”+
'Sistemi e reti,gest.prg.ORG.d'imp,tec.prog.sist.inf.te'+
“教授”+
'    ' +
'';
var parser=新的DOMParser();
var xmlDoc=parser.parseFromString(xml,“text/xml”);
var rows=xmlDoc.getElementsByTagName(“dipendente”);
var tableBody=document.querySelector(“tbody”);
createTabella(表体,行);
函数createTabella(表,xmlRows){
对于(var i=0;i

这是一个如何工作的演示。

如果我理解了这个问题,您想读取一些XML,并根据XML中找到的匹配数据在HTML表中写出数据行吗?是的,您理解正确。非常感谢,有一个问题:是否可以传递文件目录而不是变量XML?您可以制作一个ajax request是XML,是的。您可能希望使用像jQuery这样的库来实现这一点。我更新了plunker,以显示如何使用jQuery从服务器获取XML。
function creaTabella()
{
     var body = document.getElementsByTagName('body')[0]; 
     var tabella = document.createElement('table');
     var tbdy = document.createElement('tbody');          

     for(var i = 0; i < 4; i++) 
     {
         var tr = document.createElement('tr');              

         for(var j = 0; j < 8; j++)                             //columns
        {
             var td = document.createElement('td');                 
             tr.appendChild(td);                            
        }
        tbdy.appendChild(tr);
    }
}
var xml = '<?xml version="1.0"?>' + 
'<istituto>' + 
'   <dipendente categoria="Professore">' + 
'    <nome>Gennarino</nome>' +
'        <cognome>Divi</cognome>' +
'        <materia>Sistemi e reti, tec.prog.sist.inf.te.</materia>' +
'        <tipo>Professore</tipo>' +
'    </dipendente>' +
'    <dipendente categoria="Professore">' +
'        <nome>Luca</nome>' +
'        <cognome>Salza</cognome>' +
'        <materia>Sistemi e reti, gest.prg.organ.d\'imp,tec.prog.sist.inf.te</materia>' +
'        <tipo>Professore</tipo>' +
'    </dipendente>' +
'</istituto>';


var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xml, "text/xml");

var rows = xmlDoc.getElementsByTagName("dipendente");
var tableBody = document.querySelector("tbody");

createTabella(tableBody, rows);

function createTabella(table, xmlRows){
   for (var i=0; i < xmlRows.length; i++){
    var tr = document.createElement("tr");
    tr.appendChild(buildTD(xmlRows[i], "nome"));
    tr.appendChild(buildTD(xmlRows[i], "cognome"));
    tr.appendChild(buildTD(xmlRows[i], "materia"));
    tr.appendChild(buildTD(xmlRows[i], "tipo"));
    tableBody.appendChild(tr);
  } 
}

function buildTD(parentElement, elementName){
  var el = parentElement.getElementsByTagName(elementName)[0];
  var td = document.createElement("td");
  td.textContent = el.textContent; 
  return td;
}