propMap.put (qName.toLowerCase(), prop);
propMap.put (propName.toLowerCase(), prop);
    public void startElement(String namespaceURI, String localName, String qName, Attributes atts) {	// System.err.println ("XML-READ: startElement "+namespaceURI+", "+localName+", "+qName+", "+atts.getValue("id"));	// discard the first element called xmlroot	if ("xmlroot".equals (qName) && currentNode == null)	    return;	// if currentNode is null, this must be the hopobject node	if ("hopobject".equals (qName) && currentNode == null) {	    String id = atts.getValue ("id");	    String name = atts.getValue ("name");	    String prototype = atts.getValue ("prototype");	    if ( "".equals(prototype) )	        prototype = "hopobject";	    try {	        long created = Long.parseLong (atts.getValue ("created"));	        long lastmodified = Long.parseLong (atts.getValue ("lastModified"));	        currentNode = new Node (name,id,prototype,nmgr.safe,created,lastmodified);	    } catch ( NumberFormatException e ) {	        currentNode = new Node (name,id,prototype,nmgr.safe);	    }	    return;	}	// find out what kind of element this is by looking at	// the number and names of attributes.	String idref = atts.getValue ("idref");	if (idref != null) {	    // a hopobject reference.	    NodeHandle handle = makeNodeHandle (atts);	    if ("hop:child".equals (qName)) {	        if (subnodes == null) {	            subnodes = new ExternalizableVector ();	            currentNode.setSubnodes (subnodes);	        }	        subnodes.add (handle);	    } else if ("hop:parent".equals (qName)) {	        currentNode.setParentHandle (handle);	    } else {	        Property prop = new Property (qName, currentNode);	        prop.setNodeHandle (handle);	        if (propMap == null) {	            propMap = new Hashtable ();	            currentNode.setPropMap (propMap);	        }	        propMap.put (qName.toLowerCase(), prop);	    }	} else {	    // a primitive property	    elementType = atts.getValue ("type");	    if (elementType == null)	        elementType = "string";	    elementName = qName;	    if (charBuffer == null)	        charBuffer = new StringBuffer();	    else	        charBuffer.setLength (0);	}    }