public List<Meeting> xmlToList() throws Exception {
		List<Meeting> meetingList = new ArrayList<Meeting>();
		try{
			XMLInputFactory inputFactory = XMLInputFactory.newInstance();
			InputStream in = new FileInputStream("meetings.xml"); 
			XMLEventReader eventReader = inputFactory.createXMLEventReader(in);
			      // Read the XML document
			Meeting aMeeting = null;
			Calendar meetingDate = Calendar.getInstance();
			int meetingId = 0;
			Set<Contact> meetingContacts = new HashSet<Contact>();
			while (eventReader.hasNext()) { //iterate down the xmlevents
		        XMLEvent event = eventReader.nextEvent();
		        if (event.isStartElement()) { //if there is a < then set the event to be < event
		        	StartElement startElement = event.asStartElement();
			          // If we have a item element we create a new item
			        if (startElement.getName().getLocalPart() == (MEETING)) {
			        	if (event.isStartElement()) {
			        		if (event.asStartElement().getName().getLocalPart().equals(DATE)) {
			        			event = eventReader.nextEvent();
			        		    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
			        		    meetingDate.setTime(sdf.parse(event.asCharacters().getData()));// Jigar Joshi; Mar 14 '11 (StackOverflow.com)
			        		    continue;
			        		}
			        		if (event.asStartElement().getName().getLocalPart().equals(ID)) {
			        			event = eventReader.nextEvent();
			        			meetingId = Integer.parseInt(event.asCharacters().getData());
			        			continue;
			        		}
			        		if (event.asStartElement().getName().getLocalPart().equals(CONTACT)){
			        			event = eventReader.nextEvent();
			        			//do something to create a set of contacts
			        			Contact person = new ContactImpl(event.asCharacters().getData());
			        			meetingContacts.add(person);
			        			continue;
			        		}
			        		if(meetingDate.before(Calendar.getInstance())){
			        		aMeeting = new PastMeetingImpl(meetingDate, meetingId, meetingContacts);
			        			
		        			}
			        		else{
			        			aMeeting = new FutureMeetingImpl(meetingDate, meetingId, meetingContacts);
			        		}
		
			        		meetingList.add(aMeeting);
			        	}
			        }
			    }
		    }        
	    }catch(Exception ex){
	       	ex.printStackTrace();
		}
		return meetingList;
	}