public void WriteXml(XmlWriter writer) { writer.WriteStartElement("Edghes.count"); writer.WriteValue(Edges.Count); writer.WriteEndElement(); writer.WriteStartElement("Nodes.count"); writer.WriteValue(Nodes.Count); writer.WriteEndElement(); writer.WriteStartElement(nameof(edgesCount)); writer.WriteValue(edgesCount); writer.WriteEndElement(); writer.WriteStartElement(nameof(nodesCount)); writer.WriteValue(nodesCount); writer.WriteEndElement(); var serclr = new XmlSerializer(BorderColor.GetType()); serclr.Serialize(writer, BorderColor); serclr.Serialize(writer, FillColor); serclr.Serialize(writer, EdgeColor); var serEdges = new XmlSerializer(typeof(ObservableCollection <Edge>)); serEdges.Serialize(writer, Edges); var serNodes = new XmlSerializer(typeof(ObservableCollection <Node>)); serNodes.Serialize(writer, Nodes); }
public void ReadXml(XmlReader reader) { if (reader.IsEmptyElement) { return; } reader.Read(); var ser_Edges = new XmlSerializer(typeof(Edge)); var ser_Nodes = new XmlSerializer(typeof(Node)); Edge cur_Edge = null; Node cur_Node = null; var edgesCount = reader.ReadElementContentAsInt(); var nodesCount = reader.ReadElementContentAsInt(); this.edgesCount = reader.ReadElementContentAsInt(); this.nodesCount = reader.ReadElementContentAsInt(); var serclr = new XmlSerializer(BorderColor.GetType()); BorderColor = (Color)serclr.Deserialize(reader); FillColor = (Color)serclr.Deserialize(reader); EdgeColor = (Color)serclr.Deserialize(reader); reader.ReadStartElement(); if (edgesCount != 0) { while (reader.NodeType != XmlNodeType.EndElement) { cur_Edge = ser_Edges.Deserialize(reader) as Edge; Edges.Add(cur_Edge); edgesId.Add(cur_Edge.ID, cur_Edge); cur_Edge.SetParent(this); reader.MoveToContent(); } reader.ReadEndElement(); } reader.ReadStartElement(); if (nodesCount != 0) { while (reader.NodeType != XmlNodeType.EndElement) { cur_Node = ser_Nodes.Deserialize(reader) as Node; Nodes.Add(cur_Node); nodesId.Add(cur_Node.ID, cur_Node); foreach (var item in cur_Node.Path) { edgesId[item.Value].Connect(cur_Node.ID, item.Key); } reader.MoveToContent(); } reader.ReadEndElement(); } }