Beispiel #1
0
        private static XElement ConvertToXElement(DataCenterElement obj)
        {
            var element = new XElement(obj.Name);

            foreach (var arg in obj.Attributes)
            {
                element.SetAttributeValue(arg.Name, arg.ValueToString(CultureInfo.InvariantCulture));
            }
            foreach (var child in obj.Children)
            {
                var childElement = ConvertToXElement(child);
                element.Add(childElement);
            }
            return(element);
        }
        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 #3
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 #4
0
        static void WriteElement(XmlWriter writer, DataCenterElement element)
        {
            writer.WriteStartElement(element.Name);

            foreach (var attr in element.Attributes)
            {
                writer.WriteAttributeString(attr.Name, attr.Value.ToString());
            }

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

            writer.WriteEndElement();
        }
        public Dictionary <string, object> GetValues(DataCenterElement dcObject, Func <DataCenterValue, object> projection)
        {
            Dictionary <string, object> values = dcObject.Attributes.ToDictionary(x => x.Name, projection);

            foreach (var child in dcObject.Children)
            {
                if (!values.ContainsKey(child.Name))
                {
                    values.Add(child.Name, new List <Dictionary <string, object> >());
                }

                var childredValues = (List <Dictionary <string, object> >)values[child.Name];
                childredValues.Add(GetValues(child, projection));
            }

            return(values);
        }
Beispiel #6
0
        static void WriteElement(JsonWriter writer, DataCenterElement element)
        {
            writer.WriteStartObject();

            foreach (var attr in element.Attributes)
            {
                writer.WritePropertyName(attr.Name);

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

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

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

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

            foreach (var grp in element.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);
        }
        public StringResolver(DataCenterElement root)
        {
            _root = root;

            LoadStrings("cardsystem", "StrSheet_CardSystem", "String");
        }
 public static IEnumerable <Dictionary <string, object> > FindElementsAsDicts(DataCenterElement element, params string[] path)
 {
     return(FindElements(element, path).Select(ElementToDict));
 }
 public Dictionary <string, object> GetValuesAsObjects(DataCenterElement dcObject)
 {
     return(GetValues(dcObject, x => x));
 }
 public Dictionary <string, object> GetValues(DataCenterElement dcObject)
 {
     return(GetValues(dcObject, x => (object)x.ValueToString(CultureInfo.CurrentCulture)));
 }
Beispiel #12
0
 public static DataCenterElement Child(this DataCenterElement element, string name) => element.Children(name).SingleOrDefault();
Beispiel #13
0
 public Extract(DataCenterElement root)
 {
     this.Root    = root;
     this.Strings = new StringResolver(root);
 }