public ArrayList<Project> readXml() throws ParserConfigurationException, SAXException, IOException {
		ArrayList<Project> arPrj = new ArrayList<Project>();
		
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();
		Document document = builder.parse(new File(this.filename));
		
		Element root = document.getDocumentElement();
		NodeList nl = root.getElementsByTagName("project");
		//NodeList nl = root.getChildNodes();
		for (int i = 0; i < nl.getLength(); i++) {
			Element pe = (Element) nl.item(i);
			
			Project p = new Project();
			
			Element e;
			e = getFirstElement(pe, "title");
			if (e.getFirstChild() != null) {
				p.setTitle(e.getFirstChild().getNodeValue());
			} else {
				p.setTitle("");
			}
			
			e = getFirstElement(pe, "created");
			long ts = Long.parseLong(e.getFirstChild().getNodeValue());
			p.setTimeCreated(new Date(ts));
			
			e = getFirstElement(pe, "started");
			ts = Long.parseLong(e.getFirstChild().getNodeValue());
			p.setTimeStart(new Date(ts));
			
			e = getFirstElement(pe, "running");
			p.setRunning((e.getFirstChild().getNodeValue().equals("yes")) ? true : false);
			
			e = getFirstElement(pe, "checked");
			p.setChecked((e.getFirstChild().getNodeValue().equals("yes")) ? true : false);
			
			e = getFirstElement(pe, "time");
			int seconds = Integer.parseInt(e.getAttribute("overall"));
			p.setSecondsOverall(seconds);
			seconds = Integer.parseInt(e.getAttribute("today"));
			p.setSecondsToday(seconds);
			
			NodeList pnl;
			pnl = pe.getElementsByTagName("quota");
			if (pnl.getLength() != 0) {
				e = (Element) pnl.item(0);
				seconds = Integer.parseInt(e.getAttribute("overall"));
				p.setQuotaOverall(seconds);
				seconds = Integer.parseInt(e.getAttribute("today"));
				p.setQuotaToday(seconds);
			}
			
			pnl = pe.getElementsByTagName("color");
			if (pnl.getLength() != 0) {
				e = (Element) pnl.item(0);
				int r = Integer.parseInt(e.getAttribute("red"));
				int g = Integer.parseInt(e.getAttribute("green"));
				int b = Integer.parseInt(e.getAttribute("blue"));
				int a = Integer.parseInt(e.getAttribute("alpha"));
				
				p.setColor(new Color(r, g, b, a));
			}
			
			pnl = pe.getElementsByTagName("notes");
			if (pnl.getLength() != 0) {
				e = (Element) pnl.item(0);
				
				if (e.getFirstChild() != null) {
					String notes = e.getFirstChild().getNodeValue();
				
					p.setNotes(notes);
				}
			}
			
			arPrj.add(p);
			System.out.println(p);
		}
		
		return arPrj;
	}