public void WriteXml(XmlWriter writer)
        {
            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));



            //  writer.WriteStartDocument();

            //writer.WriteStartElement(nameof(DirectedGraph));

            this.WriteElementAttributes(writer, xmlInfo_graph);

            writer.WriteStartElement(nameof(Nodes));
            foreach (Node n in Nodes)
            {
                n.WriteXml(writer, xmlInfo_node);
            }
            writer.WriteEndElement();

            writer.WriteStartElement(nameof(Links));
            foreach (Link n in Links)
            {
                n.WriteXml(writer, xmlInfo_link);
            }
            writer.WriteEndElement();

            writer.WriteStartElement(nameof(Categories));
            foreach (Category n in Categories)
            {
                n.WriteXml(writer, xmlInfo_category);
            }
            writer.WriteEndElement();

            writer.WriteStartElement(nameof(Properties));
            foreach (Property n in PropertyDeclaration)
            {
                n.WriteXml(writer, xmlInfo_property);
            }
            writer.WriteEndElement();

            //   writer.WriteEndElement();

            //   writer.WriteEndDocument();
        }
Exemple #2
0
        public static void ReadElementAttributes(this IElementWithProporties graphElement, XmlReader reader, TypeXmlAttributes xmlInfo)
        {
            reader.MoveToFirstAttribute();

            do
            {
                String attName   = reader.Name;
                var    p_info    = xmlInfo.Get(attName);
                Object att_value = null;

                if (reader.ReadAttributeValue())
                {
                    att_value = reader.Value;
                }
                if (att_value != null)
                {
                    if (p_info == null)
                    {
                        graphElement.Properties.Add(attName, att_value.toStringSafe());
                    }
                    else
                    {
                        Object att_value_typed = imbTypeExtensions.imbConvertValueSafe(att_value, p_info.Property.PropertyType);
                        p_info.Property.SetValue(graphElement, att_value_typed, null);
                    }
                }
            } while (reader.MoveToNextAttribute());
            reader.MoveToElement();
        }
Exemple #3
0
        public static void WriteXml(this IElementWithProporties graphElement, XmlWriter writer, TypeXmlAttributes xmlInfo)
        {
            writer.WriteStartElement(xmlInfo.Root.ElementName);

            WriteElementAttributes(graphElement, writer, xmlInfo);


            writer.WriteEndElement();
        }
Exemple #4
0
        public static void WriteElementAttributes(this IElementWithProporties graphElement, XmlWriter writer, TypeXmlAttributes xmlInfo)
        {
            foreach (PropertyInfoXmlAttributes property in xmlInfo)
            {
                if (!property.Ignore)
                {
                    if (property.IsAttribute)
                    {
                        String v = property.Property.GetValue(graphElement, null).toStringSafe();
                        if (!v.isNullOrEmpty())
                        {
                            writer.WriteAttributeString(property.ElementName, v);
                        }
                    }
                }
            }

            foreach (var prop in graphElement.Properties)
            {
                if (!prop.value.isNullOrEmpty())
                {
                    writer.WriteAttributeString(prop.key, prop.value);
                }
            }
        }
Exemple #5
0
        public static void ReadXml(this IElementWithProporties graphElement, XmlReader reader, TypeXmlAttributes xmlInfo)
        {
            //reader.ReadStartElement(xmlInfo.Root.ElementName);



            ReadElementAttributes(graphElement, reader, xmlInfo);

            //reader.ReadEndElement();
        }
        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();
        }