/// <summary>
        /// This method returns a list with all edges in the file
        /// </summary>
        /// <param name="doc">Representant of the XML file to be read</param>
        /// <param name="points">a list with the nodes</param>
        /// <returns>the edge list</returns>
        private static IEnumerable<AGraphMLEdge> getEdgesFromFile(XmlDocument doc, IEnumerable<AGraphMLNode> points)
        {
            // return value
            List<AGraphMLEdge> edges = new List<AGraphMLEdge>();

            // temporary attributes
            AGraphMLNode pStart;
            AGraphMLNode pEnd;
            string connectionType;

            // set root element
            XmlElement root = doc.DocumentElement;
            // add the namespace
            XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
            nsmgr.AddNamespace("x", "http://graphml.graphdrawing.org/xmlns");


            // get all xml-tags with nodes
            XmlNodeList nodeList = root.SelectNodes(attributeXPathEdge, nsmgr);

            foreach (XmlNode node in nodeList)
            {
                // init values
                pStart = null;
                pEnd = null;
                connectionType = "";

                // get source / target as attribute from the child
                foreach (XmlAttribute attr in node.Attributes)
                {
                    // get source
                    if (attr.Name == attributeNameSource)
                        pStart = getNodeById(attr.InnerText, points);

                    // get target
                    if (attr.Name == attributeNameTarget)
                        pEnd = getNodeById(attr.InnerText, points);

                }

                // get connection type
                foreach (XmlNode child in node.ChildNodes)
                {
                    // search in attributes
                    foreach (XmlAttribute attr in child.Attributes)
                    {
                        // connection type
                        if (attr.InnerText.Equals(attributeNameConnectionType))
                            connectionType = child.InnerText;
                    }
                }

                // add edge to list
                AGraphMLEdge e = new AGraphMLEdge(pStart, pEnd, connectionType);
                edges.Add(e);
            }

            // return edge list
            return edges;
        }
        /// <summary>
        /// This method returns a list with all edges in the file
        /// </summary>
        /// <param name="doc">Representant of the XML file to be read</param>
        /// <param name="points">a list with the nodes</param>
        /// <returns>the edge list</returns>
        private static IEnumerable <AGraphMLEdge> getEdgesFromFile(XmlDocument doc, IEnumerable <AGraphMLNode> points)
        {
            // return value
            List <AGraphMLEdge> edges = new List <AGraphMLEdge>();

            // temporary attributes
            AGraphMLNode pStart;
            AGraphMLNode pEnd;
            string       connectionType;

            // set root element
            XmlElement root = doc.DocumentElement;
            // add the namespace
            XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);

            nsmgr.AddNamespace("x", "http://graphml.graphdrawing.org/xmlns");


            // get all xml-tags with nodes
            XmlNodeList nodeList = root.SelectNodes(attributeXPathEdge, nsmgr);

            foreach (XmlNode node in nodeList)
            {
                // init values
                pStart         = null;
                pEnd           = null;
                connectionType = "";

                // get source / target as attribute from the child
                foreach (XmlAttribute attr in node.Attributes)
                {
                    // get source
                    if (attr.Name == attributeNameSource)
                    {
                        pStart = getNodeById(attr.InnerText, points);
                    }

                    // get target
                    if (attr.Name == attributeNameTarget)
                    {
                        pEnd = getNodeById(attr.InnerText, points);
                    }
                }

                // get connection type
                foreach (XmlNode child in node.ChildNodes)
                {
                    // search in attributes
                    foreach (XmlAttribute attr in child.Attributes)
                    {
                        // connection type
                        if (attr.InnerText.Equals(attributeNameConnectionType))
                        {
                            connectionType = child.InnerText;
                        }
                    }
                }

                // add edge to list
                AGraphMLEdge e = new AGraphMLEdge(pStart, pEnd, connectionType);
                edges.Add(e);
            }

            // return edge list
            return(edges);
        }