private void loadComponentsFromXML() {
      
      //First Child should be a Desktop Tag
      if(desktopElement == null) {
         logger.info("No Desktop in XML");
         return;
      }
      
      Element _containerElement = null;
      //Walk through All Children and Load Them up
      NodeList _list = desktopElement.getChildNodes();
      for(int i=0;i<_list.getLength();i++) {
         
         Node _node = _list.item(i);
         //Only Process Elements
         if(_node.getNodeType() != Node.ELEMENT_NODE) continue;
         //Check for Container Element
         if(_node.getNodeName().equals(compCollection.CONTAINER_NODE_NAME)) {
            _containerElement = (Element)_node;
         }
      }
      
      //Load the Container
      boolean successful = compCollection.setXMLElement(_containerElement, blxHelper.getContextURL());
      
      if(successful) {
         //Place all Components on the Desktop
         BLXObject _objs[] = compCollection.getManagedObjects();
         for(int i=0;i<_objs.length;i++) {
            try {
               addDesktopComponent((DCComponent)_objs[i]);
               //Set the xml has changed flag to false because we just loaded it.
               ((DCComponent)_objs[i]).setIsDirty(false);
            }
            catch(ClassCastException _exp) {
               //This is not a DC Component so just keep it in the compCollection to be persited later
            }
         }
         dirty_flag = false;
      }
      else dirty_flag = true;
   }