Il DOM (Document Object Model) è un'interfaccia astratta che rappresenta la struttura di un documento XML.
I parsers che leggono un documento XML, rispettando le specifiche espresse nell'interfaccia DOM, sono in grado di analizzare formalmente tale documento per verificarne la conformità alle regole del Document Object Model.
Sia Internet Explorer che FireFox (e la famiglia di prodotti Mozilla) supportano il DOM, ma in maniera differente ognuno dall'altro.
Il parser di Internet Explorer
IE utilizza la libreria MSXML richiamandola come oggetto ActiveX e scegliendo un identificatore diverso per ogni sua versione:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");Siccome l'identificativo varia a seconda della versione, anzichè Microsoft.XMLDOM potrebbe essere necessario richiamare MSXML.DOMDocument oppure MSXML2.DOMDocument o anche altre versioni più recenti.
Per caricare un documento XML con il browser di casa Microsoft si eseguiranno delle istruzioni simili a queste:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.load("documento.xml");Il parser di FireFox
FireFox, come gli altri browsers che utilizzano il motore di Mozilla, invece attiva il parser tramite un
oggetto nativo.
var xmlDoc = document.implementation.createDocument("ns","root",null);I 3 parametri che riceve il metodo createDocument() rappresentano:
- lo spazio dei nomi (namespace) usato nel documento XML;
- il nome dell'elemento radice del file XML;
- il III° parametro e' lasciato 'null' perchè riservato a utilizzi futuri;
Per caricare un documento XML con Mozilla FireFox il codice sorgente necessario sarà simile a questo:
var xmlDoc = document.implementation.createDocument("","",null);
xmlDoc.async = false;
xmlDoc.load("documento.xml");Uno script cross-browsers
Viste le differenze tra i browsers nella creazione di una istanza del parser, viene comodo creare uno script che, rilevato il browser utente utilizzato, sia in grado di istanziare l'oggetto corretto ed eseguire il parsing del documento XML caricato.
L'esempio che sto per esporre, anche se funzionante, rappresenta lo scheletro di una chiamata AJAX e quindi dovrebbe essere implementato e raffinato per divenire più robusto.
<script type="text/JavaScript">
function loadXml(url){
var xmlDoc;
var is_IE = (tipeof window.ActiveXObject != 'undefined');
var is_MOZ = ! is_IE;
xmlDoc = (is_MOZ)
? document.implementation.createDocument("","",null)
: new ActiveXObject("Microsoft.XMLDOM");
/*
E' possibile eseguire ulteriori test per trovare
la versione corretta dell'identificatore di casa Microsoft
*/
xmlDoc.async = false;
xmlDoc.load(url);
return xmlDoc;
}
</script>
In questo modo si ha la possibilità di caricare correttamente il documento XML e di eseguirne il parsing semplicemente con il browser che preferiamo.
Per approfondire ulteriormente l'argomento puoi leggere un mio articolo che tratta proprio la navigazione tra i DOM Nodes.
Alla prossima,
MA.
0 commenti:
Posta un commento
Non ti è chiaro qualcosa?
No problem, posta il tuo dubbio ;)
..... e ricordati di firmarlo!