public static Dictionary <string, object> ElementToDict(DataCenterElement element)
        {
            var result = element.Attributes.ToDictionary(
                entry => entry.Key,
                entry => entry.Value.Value
                );

            foreach (var child in element.Children())
            {
                var attr = (List <Dictionary <string, object> >)result.GetValueOrDefault(child.Name, new List <Dictionary <string, object> >());
                attr.Add(ElementToDict(child));
                result[child.Name] = attr;
            }

            return(result);
        }
Beispiel #2
0
        static void WriteElement(XmlWriter writer, DataCenterElement element)
        {
            writer.WriteStartElement(element.Name);

            foreach (var(name, value) in element.Attributes.Tuples())
            {
                writer.WriteAttributeString(name, value.ToString());
            }

            foreach (var elem in element.Children())
            {
                WriteElement(writer, elem);
            }

            writer.WriteEndElement();
        }
Beispiel #3
0
        static void WriteElement(JsonWriter writer, DataCenterElement element)
        {
            writer.WriteStartObject();

            foreach (var(name, value) in element.Attributes.Tuples())
            {
                writer.WritePropertyName(name);

                switch (value.TypeCode)
                {
                case DataCenterTypeCode.Int32:
                    writer.WriteValue(value.AsInt32);
                    break;

                case DataCenterTypeCode.Single:
                    writer.WriteValue(value.AsSingle);
                    break;

                case DataCenterTypeCode.String:
                    writer.WriteValue(value.AsString);
                    break;

                case DataCenterTypeCode.Boolean:
                    writer.WriteValue(value.AsBoolean);
                    break;
                }
            }

            foreach (var grp in element.Children().GroupBy(x => x.Name))
            {
                writer.WritePropertyName(grp.Key);
                writer.WriteStartArray();

                foreach (var elem in grp)
                {
                    WriteElement(writer, elem);
                }

                writer.WriteEndArray();
            }

            writer.WriteEndObject();
        }
        public static IEnumerable <DataCenterElement> FindElements(DataCenterElement element, params string[] path)
        {
            if (path.Length == 0)
            {
                return(new List <DataCenterElement>()
                {
                    element
                });
            }

            var elements = element.Children(path.First());

            elements = path.Skip(1)
                       .Aggregate(
                elements,
                (current, name) =>
                current.SelectMany(elem => elem.Children(name))
                );

            return(elements);
        }
Beispiel #5
0
 public static DataCenterElement Child(this DataCenterElement element, string name) => element.Children(name).SingleOrDefault();