public void ReadXml(XmlReader reader) { TypeXmlAttributes xmlInfo_graph = TypeDescriptorTools.GetXmlInfo(typeof(DirectedGraph)); TypeXmlAttributes xmlInfo_node = TypeDescriptorTools.GetXmlInfo(typeof(Node)); TypeXmlAttributes xmlInfo_link = TypeDescriptorTools.GetXmlInfo(typeof(Link)); TypeXmlAttributes xmlInfo_category = TypeDescriptorTools.GetXmlInfo(typeof(Category)); TypeXmlAttributes xmlInfo_property = TypeDescriptorTools.GetXmlInfo(typeof(Property)); DirectedGraphXmlExtensions.ReadElementAttributes(this, reader, xmlInfo_graph); reader.Read(); while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: switch (reader.Name) { case nameof(Node): var tmpNode = new Node(); tmpNode.ReadXml(reader, xmlInfo_node); Nodes.Add(tmpNode); break; case nameof(Link): var newLink = new Link(); newLink.ReadXml(reader, xmlInfo_link); Links.Add(newLink); break; case nameof(Category): var newCategory = new Category(); newCategory.ReadXml(reader, xmlInfo_category); Categories.Add(newCategory); break; case nameof(Property): var newProperty = new Property(); newProperty.ReadXml(reader, xmlInfo_property); PropertyDeclaration.Add(newProperty); break; //case nameof(Nodes): // do // { // var newNode = new Node(); // newNode.ReadXml(reader, xmlInfo_node); // Nodes.Add(newNode); // } while (reader.ReadToNextSibling(nameof(Node))); // break; //case nameof(Links): // do // { // var newLink = new Link(); // newLink.ReadXml(reader, xmlInfo_link); // Links.Add(newLink); // } while (reader.ReadToNextSibling(nameof(Link))); // reader.ReadEndElement(); // break; //case nameof(Categories): // do // { // var newCategory = new Category(); // newCategory.ReadXml(reader, xmlInfo_category); // Categories.Add(newCategory); // } while (reader.ReadToNextSibling(nameof(Category))); // break; //case nameof(Properties): // do // { // var newProperty = new Property(); // newProperty.ReadXml(reader, xmlInfo_property); // PropertyDeclaration.Add(newProperty); // } while (reader.ReadToNextSibling(nameof(Property))); // break; default: break; } break; default: case XmlNodeType.Text: break; case XmlNodeType.CDATA: break; case XmlNodeType.ProcessingInstruction: break; case XmlNodeType.Comment: break; case XmlNodeType.XmlDeclaration: break; case XmlNodeType.Document: break; case XmlNodeType.DocumentType: break; case XmlNodeType.EntityReference: break; case XmlNodeType.EndElement: break; } } //reader.ReadStartElement(nameof(Nodes)); //reader.ReadEndElement(); //reader.ReadStartElement(nameof(Links)); //reader. //reader.ReadStartElement(nameof(Categories)); //reader.ReadEndElement(); //reader.ReadStartElement(nameof(Properties)); //reader.ReadEndElement(); }