// X2O: XmlToObject-ObjectToXml // Version 1.0 // // Funciones: // X2O_XML2Obj(xmlObject) // X2O_Obj2XML(obj, rootName) // X2O_SendObject(obj, xmlName, url, onReplyHandle, debug) _global.X2O_XML2Obj = function(xmlObject) { var obj = new Object(); var node = xmlObject.firstChild; _parseXML2Obj(node, obj); return obj; } _global.X2O_Obj2XML = function(obj, rootName) { var auxXml = new XML(); if (rootName == null) { rootName = "root"; } child = new XMLNode(1, rootName); auxXml.appendChild(child); _objectToXML(obj, child); return auxXml; } _global.X2O_SendObject = function(obj, xmlName, url, onReplyHandler, debug) { var _xml; if (xmlName==null) xmlName = "obj"; _xml = X2O_Obj2XML(obj, xmlName); _xml._onReplyHandler = onReplyHandler; _xml.ignoreWhite = true; _xml.contentType = 'text/xml'; if (debug) { _xml.send(url, "1"); } else { _xml.sendAndLoad(url, _xml); } _xml.onLoad = function() { var _replyObj; _replyObj = X2O_XML2Obj(this); this._onReplyHandler(_replyObj); } } _global._parseXML2Obj = function(node, obj) { var child; var prop; for (prop in node.attributes) { obj[prop] = node.attributes[prop]; } child = node.firstChild; while (child) { if (obj[child.nodeName] != null) { var len = obj[child.nodeName].length; if (obj[child.nodeName].length == null) { var aux = obj[child.nodeName]; obj[child.nodeName] = new Array(); obj[child.nodeName][0] = aux; len = 1; } obj[child.nodeName][len] = new Object(); _parseXML2Obj(child, obj[child.nodeName][len]); } else { obj[child.nodeName] = new Object(); _parseXML2Obj(child, obj[child.nodeName]); } child = child.nextSibling; } } _global._objectToXML = function(obj, node) { var i; var prop; //attributos e hijos for (prop in obj) { if (!isNaN(Number(prop))) { continue; } if (typeof (obj[prop]) == "object") { //hijo if (obj[prop].length == null) { var child = new XMLNode(1, prop); _objectToXML(obj[prop], child); node.appendChild(child); } else { for (i=0; i