Gracias a la propiedad prototype de los elementos Javascript podemos añadir funcionalidades extras a los objetos de los que disponemos en el navegador. Y aprovechandonos de ello podemos hacer cosas como añadir trim() a las cadenas de texto, indexOf() a los Array o xpath a $().
Ahora tambien podemos añadir el método toXML() a nuestros elementos, de tal forma que podremos convertir cualquier Array, Objeto o Cadena en un XML como si de un método propio se tratara.
Código
Array.toXml();
Array.prototype.toXml = function(t){ var s = new Array(), i, l = this.length, v; var t2 = (t.charAt(t.length-1)=='s')?t.substring(0,t.length-1):t; for(i=0;i<l;i++){ v = this[i]; switch (typeof v) { case 'undefined': case 'function': case 'unknown':break; case 'object':if(v!=null){s.push(v.toXml(t2));}break; case 'string':v = v.toXml(); default:s.push('<'+t2+'>'+v+''); } } if(s.length>1)return '<'+t+'>'+s.join('')+''; return s; }; Object.toXml(); Object.prototype.toXml = function(t){ var sa = new Array(''), se = new Array(''); if(!t) t=this._tagName||'object'; for(var i in this){ if (this.hasOwnProperty(i) && i.charAt(0)!='_') { var v = this[i]; switch (typeof v) { case 'undefined': case 'function': case 'unknown':break; case 'object':if(v!=null){se.push(v.toXml(i));}break; case 'string':v = v.toXml(); default: sa.push(' '+i+'="'+v+'"'); } } } var s = se.join(''); return '<'+t+sa.join('')+((s!='')?'>'+s+'':'/>'); }; String.toXml(); String.prototype.toXml = function(){ return this.replace('&','&'). replace('<','<').replace('>','>'). replace('\'',''').replace('"','"'); };
Ejemplo de Uso
Ahora veamos un ejemplo de como convertir un array de objetos en un XML.
function Car(make,model,color){
this.make = make;
this.model = model;
this.color = color;
}
var cars = new Array();
cars.push(new Car('BMW','545i','Silver'));
cars.push(new Car('Toyota','Corrola','Red'));
cars.push(new Car('Honda','Accord','Black'));
alert(cars.toXml());
3 comentarios, 0 referencias
+
#