package containing; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.Node; import org.w3c.dom.Element; import java.io.File; import java.util.ArrayList; import java.util.List; public class XML_Parser { //making a list with the object Containers List<Container> ZeeContainers = new ArrayList<Container>(); List<Container> BinnenContainers = new ArrayList<Container>(); List<Container> TreinContainers = new ArrayList<Container>(); List<Container> VrachtContainers = new ArrayList<Container>(); int error; public XML_Parser() { try { //opening the xml file File fXmlFile = new File("D:\\School\\Github\\Containing\\XML\\XML\\xml7.xml"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(fXmlFile); //normalizing document (all on one line) doc.getDocumentElement().normalize(); //printing first name of the xml file //System.out.println("Root element :" + doc.getDocumentElement().getNodeName()); //making a nodelist on tag record = container NodeList nList = doc.getElementsByTagName("record"); //looping through te node list for (int temp = 0; temp < nList.getLength(); temp++) { //making a node of index of the list Node nNode = nList.item(temp); //System.out.println("\nCurrent Element :" + nNode.getNodeName()); //if the type == ELEMENT_NODE if (nNode.getNodeType() == Node.ELEMENT_NODE) { //making an Element Element eElement = (Element) nNode; //making a new container Container eContainer = new Container(); //making a string of the total tag vertrek, because the tags of date and time of departure are equal to arrival String vertrektotaal = eElement.getElementsByTagName("vertrek").item(0).getTextContent(); //splitting the string into an string array on newline String[] v = vertrektotaal.split("\\n"); //since there are a few empty lines there are some empty indexess String vdatumD = v[2]; String vdatumM = v[3]; String vdatumJ = v[4]; String testvertrekvan = v[7]; String testvertrektot = v[8]; String vsoortvervoer = v[10]; String vvervoerbedrijf = v[11]; //Adding the diffrent values of the xml file to their respective Container variables eContainer.containerID = eElement.getAttribute("id"); eContainer.adatumD = Integer.parseInt(eElement.getElementsByTagName("d").item(0).getTextContent()); eContainer.adatumM = Integer.parseInt(eElement.getElementsByTagName("m").item(0).getTextContent()); eContainer.adatumJ = Integer.parseInt(eElement.getElementsByTagName("j").item(0).getTextContent()); eContainer.aVan = Double.parseDouble(eElement.getElementsByTagName("van").item(0).getTextContent()); eContainer.aTot = Double.parseDouble(eElement.getElementsByTagName("tot").item(0).getTextContent()); eContainer.asoortvervoer = eElement.getElementsByTagName("soort_vervoer").item(0).getTextContent(); eContainer.avervoerbedrijf = eElement.getElementsByTagName("bedrijf").item(0).getTextContent(); eContainer.eigenaar = eElement.getElementsByTagName("naam").item(0).getTextContent(); eContainer.containerNr = Integer.parseInt(eElement.getElementsByTagName("containernr").item(0).getTextContent()); eContainer.vVan = Double.parseDouble(testvertrekvan); eContainer.vTot = Double.parseDouble(testvertrektot); eContainer.vdatumD = Integer.parseInt(vdatumD); eContainer.vdatumM = Integer.parseInt(vdatumM); eContainer.vdatumJ = Integer.parseInt(vdatumJ); eContainer.vsoortvervoer = vsoortvervoer; eContainer.vvervoerbedrijf = vvervoerbedrijf; eContainer.x = Float.parseFloat(eElement.getElementsByTagName("x").item(0).getTextContent()); eContainer.y = Float.parseFloat(eElement.getElementsByTagName("y").item(0).getTextContent()); eContainer.z = Float.parseFloat(eElement.getElementsByTagName("z").item(0).getTextContent()); //sorting the containers on arrival method if ("trein".equals(eContainer.asoortvervoer)) { TreinContainers.add(eContainer); } else if ("zeeschip".equals(eContainer.asoortvervoer)) { ZeeContainers.add(eContainer); } else if ("vrachtauto".equals(eContainer.asoortvervoer)) { VrachtContainers.add(eContainer); } else if ("binnenschip".equals(eContainer.asoortvervoer)) { BinnenContainers.add(eContainer); } else { System.out.println(eContainer.asoortvervoer); error++; } //obsolete testing of the xml parser //System.out.println("Container id: " + eElement.getAttribute("id")); //System.out.println("Aankomst"); //System.out.println("Datum: " + eElement.getElementsByTagName("d").item(0).getTextContent() + "/" + eElement.getElementsByTagName("m").item(0).getTextContent() + "/" + eElement.getElementsByTagName("j").item(0).getTextContent()); //System.out.println("Tijd"); //System.out.println("Aankomst: " + eElement.getElementsByTagName("aankomst").item(0).getTextContent()); //System.out.println("tot: " + eElement.getElementsByTagName("tot").item(0).getTextContent()); //System.out.println("Soort vervoer: " + eElement.getElementsByTagName("soort_vervoer").item(0).getTextContent()); //System.out.println("Bedrijf: " + eElement.getElementsByTagName("bedrijf").item(0).getTextContent()); //System.out.println("positie"); //System.out.println("x: " + eElement.getElementsByTagName("x").item(0).getTextContent()); //System.out.println("y: " + eElement.getElementsByTagName("y").item(0).getTextContent()); //System.out.println("z: " + eElement.getElementsByTagName("z").item(0).getTextContent()); //System.out.println("Eigenaar"); //System.out.println("Naam: " + eElement.getElementsByTagName("naam").item(0).getTextContent()); //System.out.println("Containernr.: " + eElement.getElementsByTagName("containernr").item(0).getTextContent()); //System.out.println("Vertrek"); //System.out.println("Datum: " + eElement.getElementsByTagName("d").item(0).getTextContent() + "/" + eElement.getElementsByTagName("m").item(0).getTextContent() + "/" + eElement.getElementsByTagName("j").item(0).getTextContent()); //System.out.println("Tijd"); //System.out.println("Vertrek: " + eElement.getElementsByTagName("vertrek").item(0).getTextContent()); //System.out.println("tot: " + eElement.getElementsByTagName("tot").item(0).getTextContent()); //System.out.println("Soort vervoer: " + eElement.getElementsByTagName("soort_vervoer").item(0).getTextContent()); //System.out.println("Bedrijf: " + eElement.getElementsByTagName("bedrijf").item(0).getTextContent()); //System.out.println("Afmetingen (l x b x h)" + eElement.getElementsByTagName("l").item(0).getTextContent() + " x " + eElement.getElementsByTagName("b").item(0).getTextContent() + " x " + eElement.getElementsByTagName("h").item(0).getTextContent()); //System.out.println("Gewicht"); //System.out.println("Leeg: " + eElement.getElementsByTagName("leeg").item(0).getTextContent()); //System.out.println("Gevuld: " + eElement.getElementsByTagName("inhoud").item(0).getTextContent()); //System.out.println("Inhoud"); //System.out.println("Naam: " + eElement.getElementsByTagName("naam").item(0).getTextContent()); //System.out.println("Soort: " + eElement.getElementsByTagName("soort").item(0).getTextContent()); //System.out.println("Gevaar: " + eElement.getElementsByTagName("gevaar").item(0).getTextContent()); //System.out.println("ISO: " + eElement.getElementsByTagName("ISO").item(0).getTextContent()); } } //obsolete counting of //int count = Containers.size(); //System.out.println(count); //catching the exception } catch (Exception e) { e.printStackTrace(); } } }