private void parseNow(int parseDepth) throws XMLException {
		data = new Hashtable<String,Object>();
		types = new Hashtable<String,String>();
		
		Iterator<?> it = elt.getChildren().iterator();
		while( it.hasNext() ) {
			Element key = (Element) it.next();
			if( !key.getName().equals("key"))
				throw new XMLException( "Key expected in dict: " + key.getName() );
			if( !it.hasNext() )
				throw new XMLException( "Missing Value after key: " + key.getText() );
			Element value = (Element) it.next();
			if( data.get( key.getText() ) != null )
				throw new XMLException( "Duplicate key: " + key.getText() );
			
			if( value.getName().equals( "dict" ) ) {
				data.put( key.getText(), new XMLDict( value, parseDepth-1, cleanSubTree ) );
			} else if( value.getName().equals( "array" ) ) {
				data.put( key.getText(), new XMLArray( value, parseDepth-1, cleanSubTree ) );
			} else {
				data.put( key.getText(), value.getText() );
			}
			types.put( key.getText(), value.getName() );
		}
		if( cleanSubTree )
			elt.detach();
		elt = null;
	}