2009-06-27 11 views
7

Sto cercando di capire come elaborare XML nello script java Così ho cercato su Google. Il problema è che non so se i tutorial che vedo funzioneranno solo su IE.Elaborazione Xml standard cross-browser in Java Script

Qual è il modo "Standard" per elaborare i dati Xml nello script java?

Modifica: Grazie per tutte le vostre risposte. Voglio fare un'altra domanda allora. Esiste una specie di libreria di terze parti che mi consente di scrivere in modo transazionale il codice JS senza preoccuparsi della funzionalità cross-browser

+1

per rispondere alla tua modifica: Probabilmente si desidera qualcosa come jQuery o un prototipo - entrambi sono strutture finalizzate alla riduzione cross- mal di testa del browser e fornitura di serie di utili metodi/funzioni di utilità –

+0

La modifica avrebbe dovuto essere in realtà una nuova domanda, ma sì, jQuery ha un metodo parseXML(). – mydoghasworms

risposta

1

utilizzare le esercitazioni su w3schools.com. Indicano come utilizzare una varietà di browser

ad es. (uno snippet)

try //Internet Explorer 
    { 
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
    xmlDoc.async="false"; 
    xmlDoc.loadXML(txt); 
    return xmlDoc; 
    } 
catch(e) 
    { 
    parser=new DOMParser(); 
    xmlDoc=parser.parseFromString(txt,"text/xml"); 
    return xmlDoc; 
    } 

Inoltre, solo per rispondere alla domanda diretta. È un modo standard (nel frammento sopra, è nel blocco catch), ma internet explorer non supporta il modo standard .... quindi sei bloccato con qualcosa come sopra

+0

Funziona solo con i browser IE e Mozilla abilitati per ActiveX. –

0

Un approccio facile sarebbe essere per convertire il formato XML in JSON. (Google "xml to json" per diverse opzioni.) Se possibile, ti consiglio di convertirli in JSON sul lato server. È più compatto di XML, il che si traduce in tempi di download più rapidi. È anche molto meno impegnativo da analizzare, quindi funzionerà più velocemente dal lato client.

Si noti che se si sta lavorando con piccole quantità di contenuto XML, la differenza sarà trascurabile.

2

Un'altra opzione è utilizzare una libreria di terze parti, ad esempio Google AjaXSLT, per astrarre il codice specifico del browser. Ciò significa che puoi semplicemente concentrarti sulla chiamata dei metodi DOM standard, come definito nelle specifiche XML. Il parser di Google è l'unico di cui ho esperienza personale, quindi non sono sicuro che sia il migliore disponibile. Forse altre persone potrebbero essere in grado di consigliare altri parser?

6

Forse dovresti dare un'occhiata a sarissa. è una libreria crossbrowser che trovo molto utile e facile da usare. Esso permette di

  • carico XML da URL o stringhe,
  • eseguire le trasformazioni XSLT,
  • applicare query XPath

lavora sui principali browser ed è rilasciato sotto licenza GPL

1

Il modo "standard" per elaborare XML in Javascript consiste nell'utilizzare una o più API standard o ampiamente disponibili.Le API più utilizzate per questo sono:

  • oggetto DOMParser, permette di analizzare una stringa XML in una struttura DOM
  • oggetto XMLSerializer, serializza struttura DOM per stringa XML
  • oggetto XSLTProcessor, abilita l'elaborazione XSLT
  • oggetto XMLHttpRequest, per inviare XML sopra il filo

Tutti gli oggetti di cui sono disponibili in tutto il moderno (che non sono IE) browser web. Per una fortunata occasione, IE ha avuto implementazioni di queste funzionalità da sempre (beh, dal IE5 circa), avevano solo API diverse. Poiché gli oggetti sopra menzionati non sono disponibili in IE, sarebbe possibile implementarli, così come i progetti Ample SDK e Sarissa, probabilmente anche altri.

Per esempio, guarda come il codice che consente cross-browser DOMParser può sembrare:

if (!window.DOMParser) { 
    var cDOMParser = function(){}; 
    cDOMParser.prototype.baseURI = null; 
    cDOMParser.prototype.parseFromString = function(sXml, sMime) { 
     var oDocument = new ActiveXObject("Microsoft.XMLDOM"); 
     oDocument.async   = false; 
     oDocument.validateOnParse = false; 
     oDocument.loadXML(sXml); 

     return oDocument; 
    }; 
    window.DOMParser = cDOMParser; 
};