示例#1
0
        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);
        }
示例#2
0
        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();
            }
        }