Nodesreader.java 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileReader;
  5. import java.io.Reader;
  6. import javax.xml.namespace.QName;
  7. import javax.xml.stream.XMLEventReader;
  8. import javax.xml.stream.XMLInputFactory;
  9. import javax.xml.stream.XMLStreamException;
  10. import javax.xml.stream.XMLStreamReader;
  11. import javax.xml.stream.events.Attribute;
  12. import javax.xml.stream.events.Characters;
  13. import javax.xml.stream.events.StartDocument;
  14. import javax.xml.stream.events.StartElement;
  15. import javax.xml.stream.events.XMLEvent;
  16. public class Nodesreader {
  17. public Classroom read(String file) {
  18. String current = "";
  19. String nr = null, lastname = null, surname = null;
  20. ArrayList<String> subjects = new ArrayList<String>();
  21. ArrayList<Boolean> isVisited = new ArrayList<Boolean>();
  22. ArrayList<Student> students = new ArrayList<Student>();
  23. try {
  24. Reader reader = new FileReader(file);
  25. XMLInputFactory factory = XMLInputFactory.newInstance();
  26. XMLEventReader xmlEventReader = factory.createXMLEventReader(reader);
  27. while (xmlEventReader.hasNext()) {
  28. XMLEvent event = xmlEventReader.nextEvent();
  29. // start element
  30. if (event.isStartElement()) {
  31. StartElement startelement = event.asStartElement();
  32. current = startelement.getName().getLocalPart();
  33. // process the good stuff
  34. if (current.equals("student")) {
  35. // iterate attribs
  36. Iterator<Attribute> attributes = startelement.getAttributes();
  37. while (attributes.hasNext()) {
  38. Attribute attribute = attributes.next();
  39. // search required fields
  40. if (attribute.getName().toString().equals("nr"))
  41. nr = attribute.getValue();
  42. else if (attribute.getName().toString().equals("lastname"))
  43. lastname = attribute.getValue();
  44. else if (attribute.getName().toString().equals("surname"))
  45. surname = attribute.getValue();
  46. // search optional subjects
  47. else {
  48. if (!subjects.contains(attribute.getName().toString())) {
  49. subjects.add(attribute.getName().toString());
  50. }
  51. isVisited.add(Boolean.valueOf(attribute.getValue().toString()));
  52. }
  53. }
  54. // finally add student
  55. students.add(new Student(nr, lastname, surname, isVisited.toArray(new Boolean[isVisited.size()])));
  56. isVisited.clear();
  57. }
  58. } else if (event.isCharacters()) {
  59. // do a whole lot of nothing
  60. }
  61. }
  62. }
  63. catch (FileNotFoundException | XMLStreamException e) {
  64. // more nothingness
  65. }
  66. Classroom classroom = new Classroom(students.toArray(new Student[students.size()]), subjects.toArray(new String[subjects.size()]));
  67. return classroom;
  68. }
  69. }