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); }
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(); }
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); }
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))); }
public static DataCenterElement Child(this DataCenterElement element, string name) => element.Children(name).SingleOrDefault();
public Extract(DataCenterElement root) { this.Root = root; this.Strings = new StringResolver(root); }