public static ArrayList<Appointment> xmlToAppoinmentList(String xml) throws ParserConfigurationException, SAXException, IOException, TimeException { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); InputSource is = new InputSource(new StringReader(xml)); Document doc = db.parse(is); doc.getDocumentElement().normalize(); String loc = "", roomnr = "13"; ArrayList<Appointment> appointmentList = new ArrayList<Appointment>(); NodeList nodeLst = doc.getElementsByTagName("appointment"); for (int i = 0; i < nodeLst.getLength(); i++) { Appointment appointment = new Appointment(); List<Participant> participants = new ArrayList<Participant>(); Node nNode = nodeLst.item(i); if (nNode.getNodeType() == Node.ELEMENT_NODE) { Element element = (Element) nNode; int month = Integer.parseInt(getTagValues("month", element)); int year = Integer.parseInt(getTagValues("year", element)); int dayInMonth = Integer.parseInt(getTagValues("dayInMonth", element)); appointment.setDate(new Date(year, month, dayInMonth)); String starttime = getTagValues("starttime", element); appointment.setStart(Time.parseTime(starttime)); String endtime = getTagValues("endtime", element); appointment.setEnd(Time.parseTime(endtime)); String subject = getTagValues("subject", element); appointment.setSubject(subject); int id = Integer.parseInt(getTagValues("id", element)); appointment.setId(id); // Element has no attributes, which is why element.hasAttribute("..."); never works if (getTagValues("location", element) != null) { loc = getTagValues("location", element); appointment.setLocation(loc); } if (getTagValues("roomnr", element) != null) { roomnr = getTagValues("roomnr", element); appointment.setRoomNumber((Integer.parseInt(roomnr))); } String description = getTagValues("description", element); appointment.setDescription(description); String lusername = getTagValues("lusername", element); String lname = getTagValues("lname", element); Employee l = new Employee(lname, lusername); appointment.setLeader(l); participants.add(new Participant(l, State.ACCEPTED)); // NodeList pList = doc.getElementsByTagName("participant" + i); System.out.println("pList lengde: " + pList.getLength()); for (int j = 0; j < pList.getLength(); j++) { Node pNode = pList.item(j); if (pNode.getNodeType() == Node.ELEMENT_NODE) { Element pElement = (Element) pNode; String username = getTagValues("username", pElement); String name = getTagValues("name", pElement); String state = getTagValues("state", pElement); if (username.equals(lusername)) continue; participants.add(new Participant(new Employee(name, username), stringToState(state))); } } // Set leader as accepted for (Participant part : participants) { if (part.getEmployee().getUsername().equals(lusername)) part.setState(State.ACCEPTED); } appointment.setParticipants(participants); appointmentList.add(appointment); } } return appointmentList; }