private Object _deserialize(Element element) throws ConverterException {
	String nodeName = element.getNodeName().toLowerCase();

	// NULL
	if (nodeName.equals("null")) {
	    return null;
	}
	// String
	else if (nodeName.equals("string")) {
	    return _deserializeString(element);
	    /*
	     * Node data=element.getFirstChild(); if(data==null) return "";
	     * 
	     * String value=data.getNodeValue();
	     * 
	     * if(value==null) return ""; return XMLUtil.unescapeXMLString(value);
	     */
	}
	// Number
	else if (nodeName.equals("number")) {
	    try {
		Node data = element.getFirstChild();
		if (data == null) return new Double(0);
		return Caster.toDouble(data.getNodeValue());
	    }
	    catch (Exception e) {
		throw toConverterException(e);
	    }
	}
	// Boolean
	else if (nodeName.equals("boolean")) {
	    try {
		return Caster.toBoolean(element.getAttribute("value"));
	    }
	    catch (PageException e) {
		throw toConverterException(e);

	    }
	}
	// Array
	else if (nodeName.equals("array")) {
	    return _deserializeArray(element);
	}
	// Component
	else if (nodeName.equals("component") || nodeName.equals("class")) {
	    return _deserializeComponent(element);
	}
	// Struct
	else if (nodeName.equals("struct")) {
	    return _deserializeStruct(element);
	}
	// Query
	else if (nodeName.equals("recordset")) {
	    return _deserializeQuery(element);
	}
	// DateTime
	else if (nodeName.equalsIgnoreCase("dateTime")) {
	    try {
		return DateCaster.toDateAdvanced(element.getFirstChild().getNodeValue(), timeZone);
	    }
	    catch (Exception e) {
		throw toConverterException(e);
	    }
	}
	// Query
	else if (nodeName.equals("binary")) {
	    return _deserializeBinary(element);
	}
	else throw new ConverterException("can't deserialize Element of type [" + nodeName + "] to a Object representation");

    }
private Object _deserialize ( Element element ) throws ConverterException { String nodeName = element . getNodeName ( ) . toLowerCase ( ) ; if ( nodeName . equals ( "null" ) ) { return null ; } else if ( nodeName . equals ( "string" ) ) { return _deserializeString ( element ) ; } else if ( nodeName . equals ( "number" ) ) { try { Node data = element . getFirstChild ( ) ; if ( data == null ) return new Double ( 0 ) ; return Caster . toDouble ( data . getNodeValue ( ) ) ; } catch ( Exception e ) { throw toConverterException ( e ) ; } } else if ( nodeName . equals ( "boolean" ) ) { try { return Caster . toBoolean ( element . getAttribute ( "value" ) ) ; } catch ( PageException e ) { throw toConverterException ( e ) ; } } else if ( nodeName . equals ( "array" ) ) { return _deserializeArray ( element ) ; } else if ( nodeName . equals ( "component" ) || nodeName . equals ( "class" ) ) { return _deserializeComponent ( element ) ; } else if ( nodeName . equals ( "struct" ) ) { return _deserializeStruct ( element ) ; } else if ( nodeName . equals ( "recordset" ) ) { return _deserializeQuery ( element ) ; } else if ( nodeName . equalsIgnoreCase ( "dateTime" ) ) { try { return DateCaster . toDateAdvanced ( element . getFirstChild ( ) . getNodeValue ( ) , timeZone ) ; } catch ( Exception e ) { throw toConverterException ( e ) ; } } else if ( nodeName . equals ( "binary" ) ) { return _deserializeBinary ( element ) ; } else throw new ConverterException ( "can't deserialize Element of type [" + nodeName + "] to a Object representation" ) ; }
deserialize a WDDX Package (XML Element) to a runtime object

@param element
@return deserialized Element
@throws ConverterException