Ejemplo n.º 1
0
        private static void ReadXmlWriteJson(string inputPath, string outputPath)
        {
            var doc = XDocument.Load(inputPath);

            var array = new JsonArray();

            foreach (var tableDefinition in doc.Descendants(TableDefinition))
            {
                var tupleType = tableDefinition.Attribute(Name).Value;

                var fields = new JsonArray();

                foreach (var columnDefinition in tableDefinition.Elements(ColumnDefinition))
                {
                    var fieldName = columnDefinition.Attribute(Name).Value;
                    var type      = columnDefinition.Attribute(Type).Value;

                    if (type == "localized")
                    {
                        type = "string";
                    }
                    else if (type == "object")
                    {
                        type = "path";
                    }

                    var field = new JsonObject
                    {
                        { fieldName, type }
                    };

                    fields.Add(field);
                }

                var obj = new JsonObject
                {
                    { tupleType, fields }
                };
                array.Add(obj);
            }

            array.Sort(CompareTupleDefinitions);

            var strat = new PocoJsonSerializerStrategy();
            var json  = SimpleJson.SimpleJson.SerializeObject(array, strat);

            Directory.CreateDirectory(Path.GetDirectoryName(outputPath));
            File.WriteAllText(outputPath, json);
        }
Ejemplo n.º 2
0
        private static void ReadXmlWriteJson(string inputPath, string outputPath, string csOutputPath, string prefix)
        {
            var tableDefinitions = ReadXmlWriteCs(inputPath, csOutputPath, prefix);

            var array = new JsonArray();

            foreach (var tableDefinition in tableDefinitions)
            {
                if (tableDefinition.Symbolless)
                {
                    continue;
                }
                var symbolType = tableDefinition.SymbolDefinitionName;

                var fields     = new JsonArray();
                var firstField = true;

                foreach (var columnDefinition in tableDefinition.Columns)
                {
                    if (firstField)
                    {
                        firstField = false;
                        if (tableDefinition.SymbolIdIsPrimaryKey)
                        {
                            continue;
                        }
                    }

                    var fieldName = columnDefinition.Name;
                    fieldName = Regex.Replace(fieldName, "^([^_]+)_([^_]*)$", x =>
                    {
                        return($"{x.Groups[2].Value}{x.Groups[1].Value}Ref");
                    });
                    var type = columnDefinition.Type.ToString().ToLower();

                    if (type == "localized")
                    {
                        type = "string";
                    }
                    else if (type == "object")
                    {
                        type = "path";
                    }
                    else if (columnDefinition.Type == ColumnType.Number && columnDefinition.Length == 2 &&
                             columnDefinition.MinValue == 0 && columnDefinition.MaxValue == 1)
                    {
                        type = "bool";
                    }

                    if (columnDefinition.Type == ColumnType.Number && columnDefinition.Nullable)
                    {
                        type += "?";
                    }

                    var field = new JsonObject
                    {
                        { fieldName, type }
                    };

                    fields.Add(field);
                }

                var obj = new JsonObject
                {
                    { symbolType, fields }
                };
                array.Add(obj);
            }

            array.Sort(CompareSymbolDefinitions);

            var strat = new PocoJsonSerializerStrategy();
            var json  = SimpleJson.SimpleJson.SerializeObject(array, strat);

            Directory.CreateDirectory(Path.GetDirectoryName(outputPath));
            File.WriteAllText(outputPath, json);
        }