Javascript 解析XML代码并创建表到长度标记
我已经创建了一段代码,可以在简单模式下解析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
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;
}