fishScript.com d
Home| Progetto| Web| Faq| Acronimi

Argomenti

Documenti pubblicabili:1120
Scripts:1282
Documenti non pubblicabili:162
Categorie tematiche:68
.Net
   |_C#
   |_Visual basic.net
   |_Asp.net
Active Server Pages
C++
Cascade Style Sheet
JavaScript
Mysql
Php
Xml
Java
   |_Java 2 Micro Edition
   |_Java server pages
   |_Java Servlet
Oracle
   |_PLSQL
PostgreSQL
Unix



Oracle... Script: Conditional update



PLSQL... Script: DYN SQL
Xml... Faq: What is SQL/XML


La rabbia è creativa, la depressione è senza utilità Dyson, Freeman J.



Charles Babbage(1791-1871) nel 1823 ottenne dal governo 100 Sterline per la costruzione del calcolatore Different Engine.

La rabbia è creativa, la depressione è senza utilità Dyson, Freeman J.

Xml

Home >Xml > Iniziare con Xml

Stampa  Stampa


Obiettivo

Questo documento prende in esame alcune tecniche di iterazione tra codice javascript e documento Xml. La tecnologia utilizza l'oggetto ActiveX Microsoft.XMLDOM pertanto il codice riportato funziona su browser Microsoft Explorer (Testato con vers. 5 e superiori). Per visualizzare l'output dei processi descritti in questo tutorial caricare questo file, e occorre naturalmente abilitare Explorer all'esecuzione di Javascript. E' possibile scaricare in formato zip i file sorgenti utilizzati per questo tutorial.

Prerequisiti

Per questo tutorial è utile la conoscenza di Javascript e almeno delle nozioni di base sul linguaggio Xml.

Documento Xml

Il documento libri.xml composto dal nodo principale <libri> che contiene 4 figli, ovvero gli elementi inclusi nei tag libro.
Il documento Xml deve essere naturalmente valido.

<?xml version="1.0" encoding="utf-8" ?>
<libri>
<libro stato="Canada" prezzo="8" >
<nome>William</nome>
<cognome>Gibson</cognome>
<titolo>Neuromancer</titolo>
<anno>1984</anno>
</libro>
<libro stato="Stati Uniti" prezzo="7">
<nome>Bruce</nome>
<cognome>Sterling</cognome>
<titolo>The Hacker Crackdown: Law And Disorder on the Electronic Frontier </titolo>
<anno>1992</anno>
<note>A compelling piece of work</note>
</libro>

(... ...)


</libri>


Inoltre alcuni tag <libro> possegono degli attributi(stato, prezzo) e i valori relativi.

Caricamento documento Xml

Prima di tutto viene creato un oggetto XMLDOM ricorrendo appunto alla tecnologia ActiveX. Solo se questa tecnologia è disponibile al browser lo script procede al caricamento dei dati XML, altrimenti il controllo su window.ActiveXObject con un messaggio informa l'utente dell'impossibilità di procedere con lo script:

if (window.ActiveXObject){
...
}else{
alert("Spiacente per questo tutorial occorre Microsoft Explorer");
return false; }
}


Si può ricorrere a due oggetti messi a disposizione dalla Microsoft XMLDOM oppure FreeThreadedXMLDOM. 

Per instazializzare questi oggetti:

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

var xmlDoc = new ActiveXObject("Microsoft.FreeThreadedXMLDOM");

Di fatto si comportano in maniera uguale (utilizzano gli stessi metodi) , la versione FreeThreaded offre una migliore performance grazie al suo algoritmo di parsing.

<script language="javascript" type="text/javascript">  
<!--
function loadXML(xmlFile) {
if (window.ActiveXObject){
var xmlDoc = new ActiveXObject("Microsoft.FreeThreadedXMLDOM");
xmlDoc.async="false";
xmlDoc.load(xmlFile); xmlObj=xmlDoc.documentElement;
alert(xmlObj.xml); // Visualizzazione del file XML
}else{
alert("Spiacente per questo tutorial occorre Explorer");
return false; }
}
loadXML('libri.xml');
//-->
</script>


La proprietà boleana async determina se consentire il download asincrono del file Xml. Di default è true indicando che il metodo load restituisce un controllo prima che il download sia terminato. Se impostato a true si può utilizzare la proprietà readyState per determinare quando il download è completato. In questo esempio async viene impostato false in modo che il documento venga completamente caricato prima che la funzione chiamante riacquisti controllo.

Per verificare con i nostri occhi il successo del caricamento dei dati Xml si può utilizzare un'istruzione come:

alert(xmlObj.xml);

Ovvero utilizzare il metodo xml  dell'oggetto Microsoft.FreeThreadedXMLDOM, che visualizza appunto il documento Xml nel suo intero.

Mentre il metodo text  permette di stampare i valori inclusi nei tag:

alert(xmlObj.text);

I nodi figli (childNodes)

Il metodo childNodes permette di accedere ai nodi figli del documento Xml. L'attributo length determina il numero di figli di uno specificato nodo. Per ricavare il numero dei figli principali del documento Xml:

xmlObj.childNodes.length

Mentre per ricavare il numero dei figli di un sottofiglio occorre specificare tra parentesi il numero dell'elemento (naturalmente partendo da 0)

xmlObj.childNodes(1).childNodes.length

Per il quarto figlio che non possiede  figli l'istruzione prevedibilmente restituisce 0:

xmlObj.childNodes(3).childNodes.length

... e così via.

Mentre per ricavare il numero dei figli del secondo figlio del terzo figlio principale (il numero dei figli del tag <commento>), occorre riprodurre la stessa gerarchia nell'istruzione:

xmlObj.childNodes(2).childNodes(4).childNodes.length

La proprietà hasChildNodes permette di rilevare se un elemento possiede figli: restituendo true per il secondo figlio (Bruce Stearling):

xmlObj.childNodes(1).hasChildNodes)

mentre false per il quarto figlio

xmlObj.childNodes(3).hasChildNodes Per ricavare il nome del tag(<libro>) di un figlio si utilizza la proprietà tagName. Il nome del figlio 4(<commento>) del 2 figlio principale:

xmlObj.childNodes(2).childNodes(4).tagName

Il valore contenuto in un nodo e nei suoi attributi

Individuato un nodo con childNodes  il metodo firstChild   e la sua proprietà text permettono di ricavare appunto il valore contenuto.

Per nome dell'autore autore del I nodo:

xmlObj.childNodes(0).firstChild.text

Mentre il cognome dell'autore del II Nodo

xmlObj.childNodes(2).childNodes(1).firstChild.text

Ogni elemento Xml ( <libro></libro> ) a secondo delle esigenze può contenere degli attributi (<libro prezzo="12">) e il metodo getAttribute() estrae il valore  dell'attributo specificato:

 xmlObj.childNodes(0).getAttribute("prezzo")

Scorrere e stampare i valori

A questo punto è possibile stampare il valore degli elementi di un documento Xml atrraverso un ciclo, modificando come segue la funzione di esempio loadXML()

function loadXML(xmlFile) {
if (window.ActiveXObject){
var xmlDoc = new ActiveXObject("Microsoft.FreeThreadedXMLDOM");
xmlDoc.async="false";
xmlDoc.load(xmlFile);
xmlObj=xmlDoc.documentElement;

for (i=0; i<xmlObj.childNodes.length;i++){
if (xmlObj.childNodes(i).hasChildNodes){ // Se ha figli
document.write(xmlObj.childNodes(i).childNodes(0).text ) // Nome I autore
document.write(xmlObj.childNodes(i).childNodes(1).text +" - ") // Cognome I autore
}}
}else{
alert("Spiacente per questo tutorial occorre Explorer");
return false; }
}


loadXML("libri.xml");


Lo script stampa a video:
William Gibson - Bruce Sterling - Neal Stephenson -

Da notare l'utilizzo del controllo chasChildNodes  altrimenti l'ultimo figlio del documento Xml provocherebbe un errore("Necessario oggetto") non avendo i figli che il codice cercano di stampare.
Utilizzando il metodo getElementsByTagName() è possibile scorrere il documento Xml e stampare con nodeValue i valori corrispondenti al tag specificato, sostituendo il ciclo appena inserito nella funzione di esempio loadXML() con il seguente blocco di codice.

elementi = xmlObj.getElementsByTagName("nome");
for (i = 0; i < elementi.length; i++)
document.write(elementi[i].firstChild.nodeValue + "\r");


Lo script stampa a video:

William Bruce Neal
signal Marco Magnani marcomagnani@fishscript.com




Warning: include(ads/text468x15.html): failed to open stream: No such file or directory in D:\inetpub\webs\fishscriptcom\documents\view_document.php on line 131

Warning: include(): Failed opening 'ads/text468x15.html' for inclusion (include_path='.;C:\php\pear') in D:\inetpub\webs\fishscriptcom\documents\view_document.php on line 131

Tutorial
Iniziare con Xml Oggetti e metodi per la gestione dei documenti Xml con Javascript e ActiveX   [Xml] 
Script
Parsing file Xml Acquisizione e stampa dei dati di un file Xml  [Xml] 
Lettura dei childNodes di un file xml Lettura da xml dei campi del primo elemento disposti in un array  [Xml] 
Semplice esempio xslt/ xml Utilizzo di xslt  [Xml] 
Le 4 fasi di caricamento e parsing di un documento Xml Attraverso un esempio vengono rpese in esame le fasi di caricamento e di validazione utilizzando l'oggetto ActiveXObjectMsxml2.DOMDocument   [Xml] 
Importazione di file xml Stampa di tutti i campi(childNodes) del primo elemento  [Xml] 
Importazione file xml (variante) Stampa di alcuni campi(childNodes) del primo elemento  [Xml] 
Leggere i dati da file Esempio di lettura dati da formati Xml, Html, Txt  [Xml] 
Stampa nodi figli e valori utilizzo metodo documentElement  [Xml] 
Parsing file xml Stampa di tutti i campi(childNodes) del primo elemento  [Xml] 
Interrogare xml attraverso Xsl formattazione e conteggio dei dati   [Xml] 
Esempio Xsl e Xml File xls che estrae e formatta i dati di un file xml  [Xml] 
Template XHTML 1.0 Modello file XHTML   [Xml] 
XHTML 1.0 Strict template Un'altro template Xhtml pronto all'utilizzo con l'impostazione della pagina con <thead>,<tfoot>,<tbody> come raccomandato dal W3c  [Xml] 
Entità e caratteri speciali Gestione dei caratteri speciali attraverso xsl  [Xml] 
Strutture condizionali in xsl costrutti choose, when e otherwise  [Xml] 

signal Marco Magnani marcomagnani@fishscript.com



Cerca





Il web è un giovane media: infatti ha solo 10 anni di età.
Si pensi alla televisione o al cinema all'età di 10 anni. A quei tempi questi media erano primitivi, ancora alla ricerca della loro strada. Venivano esplorati i limiti della nuova tecnologia, ma grandi progressi dovevano ancora essere raggiunti.
Oggi, i professionisti del web si trovano nella stessa fase. Sono pionieri che stanno ancora esplorando i limiti del nuovo media. Senza dubbio, i nostri nipoti, quando vedranno quello che abbiamo fatto pensaranno a qualcosa di elementare.
C'è ancora molto da scopire su quello che il Web può fare e suo come può essere utilizzato.
Jason Foss


Il web è un giovane media: infatti ha solo 10 anni di età.
Si pensi alla televisione o al cinema all'età di 10 anni. A quei tempi questi media erano primitivi, ancora alla ricerca della loro strada. Venivano esplorati i limiti della nuova tecnologia, ma grandi progressi dovevano ancora essere raggiunti.
Oggi, i professionisti del web si trovano nella stessa fase. Sono pionieri che stanno ancora esplorando i limiti del nuovo media. Senza dubbio, i nostri nipoti, quando vedranno quello che abbiamo fatto pensaranno a qualcosa di elementare.
C'è ancora molto da scopire su quello che il Web può fare e suo come può essere utilizzato.
Jason Foss



Xml... Definizioni: XSLT

Oracle... Definizioni: SCN





fishScript.Com is accessible by Mobile access technology as mobile phones, Palm and Pocket PC .

Nicoleta e Marco Magnani tutorial, examples, courses, esempi, corsi, esercizi, appunti vari Dottoressa Nicoleta Dragu Formatrice Docente Insegnante Mediatrice Culturale Dott. Marco Magnani Universita La Sapienza Roma Master Computer Science Hunter College New York , Data Base Administrator DBA oracle System architect

Last modified: 2017-11-30 amministratore@fishscript.comNico and Marco Magnani Software Production
Home|About this Site © 2003-2008 www.fishScript.com ®