private void loadNodesFromXMLNode(Node graphElement) {
        NodeList moleculenodes = graphElement.getChildNodes();
        for (int i = 0; i < moleculenodes.getLength(); i++) {
            Node moleculenode = moleculenodes.item(i);
            // Graph/Nodes/Node
            if (moleculenode.getNodeName().equals("Node")) {
                NamedNodeMap moleculeAttributes = moleculenode.getAttributes();
                String NodeID = moleculeAttributes.getNamedItem("Id").getNodeValue();
                String NodeLabel = moleculeAttributes.getNamedItem("Label").getNodeValue();
                String LabelFontName = moleculeAttributes.getNamedItem("LabelFontName").getNodeValue();
                String LabelFontSize = moleculeAttributes.getNamedItem("LabelFontSize").getNodeValue();
                String LabelInsideStr = moleculeAttributes.getNamedItem("LabelInside").getNodeValue();
                String Shape = moleculeAttributes.getNamedItem("Shape").getNodeValue();
                String WidthStr = moleculeAttributes.getNamedItem("Width").getNodeValue();
                String HeightStr = moleculeAttributes.getNamedItem("Height").getNodeValue();
                String TextColorStr = moleculeAttributes.getNamedItem("TextColor").getNodeValue();
                String FillColorStr = moleculeAttributes.getNamedItem("FillColor").getNodeValue();
                String BorderColorStr = moleculeAttributes.getNamedItem("BorderColor").getNodeValue();

                System.out.println("Reading Node " + i + ": " + NodeID + " =  " + NodeLabel);

                int width = Integer.parseInt(WidthStr);
                int height = Integer.parseInt(HeightStr);
                int fontsize = Integer.parseInt(LabelFontSize);
                boolean labelinside = Boolean.parseBoolean(LabelInsideStr);
                Color textcolor = PathCaseViewGenerator.colorNameToColorObject(TextColorStr);
                Color fillcolor = PathCaseViewGenerator.colorNameToColorObject(FillColorStr);
                Color bordercolor = PathCaseViewGenerator.colorNameToColorObject(BorderColorStr);

                y.base.Node graphnode = graph.createNode();
                ShapeNodeRealizer nr = new ShapeNodeRealizer();
                if (Shape.equals("ELLIPSE"))
                    nr.setShapeType(ShapeNodeRealizer.ELLIPSE);
                else if (Shape.equals("RECTANGLE"))
                    nr.setShapeType(ShapeNodeRealizer.RECT);
                else if (Shape.equals("TRIANGLE"))
                    nr.setShapeType(ShapeNodeRealizer.TRIANGLE);
                else if (Shape.equals("DIAMOND"))
                    nr.setShapeType(ShapeNodeRealizer.DIAMOND);
                else if (Shape.equals("ROUNDRECTANGLE"))
                    nr.setShapeType(ShapeNodeRealizer.ROUND_RECT);
                else
                    nr.setShapeType(ShapeNodeRealizer.RECT);

                nr.setSize(width, height);
                y.view.NodeLabel nodelabel = nr.createNodeLabel();
                if (!labelinside)
                    nodelabel.setModel(y.view.NodeLabel.EIGHT_POS);
                else
                    nodelabel.setModel(y.view.NodeLabel.CENTER);

                nodelabel.setText(NodeLabel);
                nodelabel.setFontName(LabelFontName);
                nodelabel.setFontSize(fontsize);
                nodelabel.setTextColor(textcolor);
                nr.setLineColor(bordercolor);
                nr.setFillColor(fillcolor);
                nr.setLabel(nodelabel);

                graph.setRealizer(graphnode, nr);
                idToNodeTable.put(NodeID, graphnode);


            }
        }
    }