/// <summary> /// Parsing an edge. /// </summary> /// <param name="myEdge">The current XML node.</param> /// <returns>An tuple with the edge name and the edge view.</returns> private Tuple <String, IEdgeView> ParseEdge(XmlNode myEdge) { IEdgeView edgeView = null; var edgeProps = new Dictionary <String, Object>(); var singleEdges = new List <ISingleEdgeView>(); var edge = myEdge.FirstChild; var name = String.Empty; VertexView targetVertex = null; Boolean isHyperEdge = false; isHyperEdge = myEdge.Attributes["xsi:type"].Value == "HyperEdgeView"; if (edge.HasChildNodes) { while (edge != null) { if (edge.HasChildNodes) { switch (edge.Name) { case "Name": name = edge.InnerText; break; case "Properties": ParseEdgeProperties(edge.FirstChild, ref edgeProps); break; case "SingleEdge": singleEdges.Add(ParseSingleEdge(edge)); break; case "TargetVertex": targetVertex = ParseVertex(edge); break; } } edge = edge.NextSibling; } } if (isHyperEdge) { edgeView = new sones.GraphQL.Result.HyperEdgeView(edgeProps, singleEdges); } else { edgeView = new sones.GraphQL.Result.SingleEdgeView(edgeProps, targetVertex); } return(new Tuple <string, IEdgeView>(name, edgeView)); }
/// <summary> /// Parsing an edge. /// </summary> /// <param name="myEdge">The current XML node.</param> /// <returns>An tuple with the edge name and the edge view.</returns> private Tuple<String, IEdgeView> ParseEdge(XmlNode myEdge) { IEdgeView edgeView = null; var edgeProps = new Dictionary<String, Object>(); var singleEdges = new List<ISingleEdgeView>(); var edge = myEdge.FirstChild; var name = String.Empty; VertexView targetVertex = null; Boolean isHyperEdge = false; isHyperEdge = myEdge.Attributes["xsi:type"].Value == "HyperEdgeView"; if (edge.HasChildNodes) { while (edge != null) { if (edge.HasChildNodes) { switch (edge.Name) { case "Name" : name = edge.InnerText; break; case "Properties": ParseEdgeProperties(edge.FirstChild, ref edgeProps); break; case "SingleEdge" : singleEdges.Add(ParseSingleEdge(edge)); break; case "TargetVertex": targetVertex = ParseVertex(edge); break; } } edge = edge.NextSibling; } } if (isHyperEdge) { edgeView = new sones.GraphQL.Result.HyperEdgeView(edgeProps, singleEdges); } else { edgeView = new sones.GraphQL.Result.SingleEdgeView(edgeProps, targetVertex); } return new Tuple<string, IEdgeView>(name, edgeView); }