C'è un oggetto che rappresenta il record, le cui proprietà sono rappresentate dai suoi childNodes, come se fossero tanti elementi di una tabella.
L'oggetto viene poi istanziato in base al numero ordinale.
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async=false; xmlDoc.load("data.xml"); var root=xmlDoc.documentElement; function persona(num){ var record=root.getElementsByTagName("persona")[num]; this.nome=record.getElementsByTagName("nome")[0]; this.cognome=record.getElementsByTagName("cognome")[0]; this.professione=record.getElementsByTagName("professione")[0]; this.figli=record.getElementsByTagName("figlio"); } function init(){ Mario=new persona(0); Giuseppe=new persona(1); alert(Mario.nome.text); alert(Mario.cognome.text); for(var n=0;n<Mario.figli.length;n++) alert(Mario.figli[n].text); } window.onload=init;costruito per questo XML:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE tabella [ <!ELEMENT tabella (persona*)> <!ELEMENT persona (nome, cognome, professione,figlio*)> <!ELEMENT nome (#PCDATA)> <!ELEMENT cognome (#PCDATA)> <!ELEMENT professione (#PCDATA)> <!ELEMENT figlio (#PCDATA)> ]> <tabella> <persona> <nome>Mario</nome> <cognome>Rossi</cognome> <professione>Ladro</professione> <figlio>Giovanni</figlio> <figlio>Luigi</figlio> </persona> <persona> <nome>Giuseppe</nome> <cognome>Verdi</cognome> <professione>Musicista</professione> </persona> </tabella>
Mi sembra molto funzionale, perchè istanziando volta per volta l'oggetto si può accedere a tutti i record della "tabella" e prenderne i campi desiderati come proprietà dell'oggetto.
Nessun commento:
Posta un commento