I’m doing XML deserialization and I want the properties of a wrapper object accessible to all subobjects, that are created inside it.
first some code to show how it works:
Expand|Select|Wrap|Line Numbers
- // some stuff left out
- function WDDX(xmldoc)
- {
- var data = xmldoc.getElementsByTagName("data")[0];
- this.content = new WDDXNode(data.getFirstElementChild());
- this.setting = null;
- }
- WDDX.prototype.deserialize = function()
- {
- return this.content.parse();
- }
- function WDDXNode(knoten)
- {
- this.node = knoten;
- this.name = knoten.tagName.toLowerCase();
- this.text = knoten.firstChild.data;
- this.elements = knoten.getElementChildren();
- }
- WDDXNode.prototype.parse = function()
- {
- switch (this.name) {
- case "array" : return this.getArray();
- case "boolean" : return this.getBoolean();
- // and some more
- }
- }
- // a method where new objects are created
- WDDXNode.prototype.getStruct = function()
- {
- var JSObject, StructIndex, items;
- var type = String(this.node.getAttribute("type"));
- if (setting == "whatever value")
- // do some additional stuff like getting the classname from elsewhere
- if (type && "function" == typeof window[type])
- JSObject = new window[type];
- else
- JSObject = new Object;
- items = this.node.getElementChildren("var");
- for (var l, i = 0, l = items.length; i < l; i++) {
- var item = new WDDXNode(items[i].getFirstElementChild());
- StructIndex = items[i].getAttribute("name");
- JSObject[StructIndex] = item.parse();
- }
- return JSObject;
- }
Expand|Select|Wrap|Line Numbers
- var x = new WDDX(XMLHttpRequest.responseXML);
- x.setting = "whatever value";
- var deser = x.deserialize();
thanks, Dormi