static private void XmlToJsonAttributes(XmlNode attributesNode, JsonNode jsonNode, XmlToJsonConverter converter) { foreach (XmlNode attributeXmlNode in attributesNode.ChildNodes) { JsonObject layerAttribute = new JsonObject(); converter.Convert(attributeXmlNode, layerAttribute); jsonNode.Add(layerAttribute); } }
static private void XmlToJsonSublayers(XmlNodeList sublayersXmlNodes, JsonNode jsonNode, XmlToJsonConverter converter) { JsonList sublayersJsonNodes = new JsonList(); foreach (XmlNode sublayerXmlNode in sublayersXmlNodes) { JsonObject sublayerJsonNode = new JsonObject(); converter.Convert(sublayerXmlNode, sublayerJsonNode); sublayersJsonNodes.Add(sublayerJsonNode); } jsonNode.Add("sublayers", sublayersJsonNodes); }
static void Main(string[] args) { if (args.Length != 2) { Console.WriteLine("ERROR: Пожалуйста, укажите два параметра командной строки: путь до XML-файла и путь для создания JSON-файла"); return; } string xmlPath = args[0]; string jsonPath = args[1]; XmlDocument xmlDocument = new XmlDocument(); try { xmlDocument.Load(xmlPath); } catch (Exception exception) { Console.WriteLine(string.Format("ERROR: Возникла ошибка при чтении XML-файла: {0}", exception.Message)); return; } XmlToJsonConverter converter = new XmlToJsonConverter(); converter.AddRule(new Rule(IsDocument, XmlToJsonConvertFirstChild)); converter.AddRule(new Rule(IsCapability, XmlToJsonConvertFirstChild)); converter.AddRule(new Rule(IsLayer, XmlToJsonLayer)); converter.AddRule(new Rule(IsAttributes, XmlToJsonAttributes)); converter.AddRule(new Rule(IsAttribute, XmlToJsonAttribute)); JsonObject jsonObject = new JsonObject(); converter.Convert(xmlDocument, jsonObject); File.WriteAllText(jsonPath, jsonObject.GetAsString()); }
static private void XmlToJsonConvertFirstChild(XmlNode xmlNode, JsonNode jsonNode, XmlToJsonConverter converter) { converter.Convert(xmlNode.FirstChild, jsonNode); }