/**
  * @param element The element.
  * @return The object.
  */
 public Object deserialize(Element element) throws XMLException {
   String tagname = element.getTagName();
   String classname = element.getAttribute("class"); // use class attribute...
   if (classname == null || classname.equals("")) {
     classname = getFactory().mapToClassname(tagname); // ... or preset-table
   }
   if (classname != null) {
     Class cl;
     try {
       cl = this.getClass().getClassLoader().loadClass(classname);
     } catch (ClassNotFoundException cnfe) {
       throw new XMLException("cannot load class " + classname);
     }
     Object o;
     try {
       o = cl.newInstance();
     } catch (Exception e) {
       throw new XMLException("cannot instanciate class " + classname);
     }
     XMLSerializable x = (XMLSerializable) o;
     x.getXMLHandler().parseXML(element, this);
     return x;
   } else {
     throw new XMLException("cannot deserialize, unknown tag <" + tagname + ">");
   }
 }
 /**
  * @param object The object.
  * @param document The document.
  * @return The element.
  */
 public Element serialize(XMLSerializable object, Document document) {
   Class cl = object.getClass();
   String tagname;
   tagname = getFactory().mapToTagname(cl.getName());
   Element e = document.createElement(tagname);
   object.getXMLHandler().toXML(e, this);
   return e;
 }