Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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;
- public class XMLReader {
- ArrayList<Vertex> xmlVertex;
- ArrayList<Edge> xmlEdge;
- int heigth;
- int width;
- public XMLReader() {
- xmlVertex = new ArrayList<>();
- xmlEdge = new ArrayList<>();
- try {
- File fXmlFile = new File("graph5_32.xml");
- DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
- Document doc = dBuilder.parse(fXmlFile);
- //optional, but recommended
- //read this - http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
- doc.getDocumentElement().normalize();
- System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
- NodeList vertexList = doc.getElementsByTagName("node");
- NodeList edgeList = doc.getElementsByTagName("edge");
- NodeList graphList = doc.getElementsByTagName("graph");
- heigth = Integer.valueOf(((Element) graphList.item(0)).getAttribute("height"));
- width = Integer.valueOf(((Element) graphList.item(0)).getAttribute("width"));
- System.out.println("----------------------------");
- for (int temp = 0; temp < vertexList.getLength(); temp++) {
- Node nNode = vertexList.item(temp);
- //System.out.println("\nCurrent Element :" + nNode.getNodeName());
- if (nNode.getNodeType() == Node.ELEMENT_NODE) {
- Element eElement = (Element) nNode;
- int id = Integer.valueOf(eElement.getAttribute("id"));
- int x = Integer.valueOf(eElement.getAttribute("x"));
- int y = Integer.valueOf(eElement.getAttribute("y"));
- Vertex v = new Vertex(id, x, y);
- xmlVertex.add(v);
- }
- }
- //Hier Ausgabe der Eingelesenen Vertices
- /*
- for(Vertex v : xmlVertex) {
- System.out.println(v.printVertex());
- }*/
- for(int temp = 0; temp < edgeList.getLength(); temp++) {
- Node nNode = edgeList.item(temp);
- //System.out.println("\nCurrent Element :" + nNode.getNodeName());
- if (nNode.getNodeType() == Node.ELEMENT_NODE) {
- Element eElement = (Element) nNode;
- int id = Integer.valueOf(eElement.getAttribute("id"));
- Vertex from = getVertexWith(Integer.valueOf(eElement.getAttribute("start")));
- Vertex to = getVertexWith(Integer.valueOf(eElement.getAttribute("end")));
- Edge e = new Edge(from, id, to);
- xmlEdge.add(e);
- }
- }
- //Hier Ausgabe der Eingelesenen Vertices
- /*
- for(Edge v : xmlEdge) {
- System.out.println(v.printEdge());
- }*/
- System.out.println("Size of VERTICES: " +xmlVertex.size());
- System.out.println("Size of EDGES: " +xmlEdge.size());
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
- public ArrayList<Vertex> returnVertices(){
- return xmlVertex;
- }
- public ArrayList<Edge> returnEdges(){
- return xmlEdge;
- }
- public int getHeight() {
- return heigth;
- }
- public int getWidth() {
- return width;
- }
- private Vertex getVertexWith(int id) {
- Vertex returnVertex = null;
- for(Vertex v : xmlVertex) {
- if(v.getVertex_ID() == id) {
- returnVertex = v;
- break;
- }
- }
- return returnVertex;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement