Ho un file XML in questo modo:È questo il modo più veloce per analizzare il mio XML in oggetti JavaScript usando jQuery?
<content>
<box>
<var1>A1</var1>
<var2>B1</var2>
<var3>C1</var3>
<var4>D1</var4>
</box>
<box>
<var1>A2</var1>
<var2>B2</var2>
<var3>C2</var3>
<var4>D2</var4>
</box>
<box>
<var1>A3</var1>
<var2>B3</var2>
<var3>C3</var3>
<var4>D3</var4>
</box>
</content>
Ha 500 box
elementi che ho bisogno di analizzare in oggetti JavaScript. Sto usando questo codice che funziona bene, ma io sono un novizio e forse mi manca qualcosa e vorrei ottenere suggerimenti se c'è un/modo migliore più veloce per farlo:
var app = {
//...
box: [],
init: function (file) {
var that = this;
$.ajax({
type: "GET",
url: file,
dataType: "xml",
success: function (xml) {
$("box", xml).each(function (i) {
var e = $(this);
that.box[i] = new Box(i, {
var1: e.children("var1").text(),
var2: e.children("var2").text(),
var3: e.children("var3").text(),
var4: e.children("var4").text()
});
});
}
});
},
//...
};
Grazie in anticipo.
Questo sembra grande, ma poi come potrei aggiungere metodi al prototipo degli oggetti creati scatola? – VerizonW
È possibile utilizzare un ciclo for ... in loop per copiare tutte le proprietà da result.content.box in un oggetto con i metodi desiderati (è possibile farlo in una funzione di tipo "costruttore", se lo si desidera). Non è altrettanto elegante. In alternativa, è possibile assegnare tutti i metodi all'oggetto risultato JSON all'interno della funzione di successo. –
In altre parole, in generale, non è possibile assegnare effettivamente agli oggetti box creati un prototipo speciale. Invece, devi tradurre gli oggetti "plain old data" che il parser JSON ti dà in qualche modo in versioni pienamente funzionali, o semplicemente li usa come sono in un codice più procedurale. –