Напишите приложение на языке C#, конвертирующее произвольный JSON в XML. Используйте JsonDocument.
csharp
using System;
using System.Text.Json;
using System.Xml;
namespace JsonToXmlConverter
{
class Program
{
static void Main(string[] args)
{
string jsonString = @"
{
""firstName"": ""John"",
""lastName"": ""Doe"",
""age"": 30,
""address"": {
""streetAddress"": ""123 Street"",
""city"": ""New York"",
""state"": ""NY"",
""postalCode"": ""10001""
},
""phoneNumbers"": [
""123-456-7890"",
""987-654-3210""
]
}";
// Разбираем JSON-строку с помощью JsonDocument
JsonDocument jsonDocument = JsonDocument.Parse(jsonString);
// Создаем новый документ XML
XmlDocument xmlDocument = new XmlDocument();
XmlElement rootElement = xmlDocument.CreateElement("root");
xmlDocument.AppendChild(rootElement);
// Рекурсивно конвертируем JSON в XML
ConvertJsonToXml(jsonDocument.RootElement, rootElement, xmlDocument);
// Сохраняем XML-документ в файл или выводим его на консоль
xmlDocument.Save("output.xml");
Console.WriteLine(xmlDocument.OuterXml);
}
static void ConvertJsonToXml(JsonElement jsonElement, XmlElement parentElement, XmlDocument xmlDocument)
{
foreach (JsonProperty property in jsonElement.EnumerateObject())
{
XmlElement propertyElement = xmlDocument.CreateElement(property.Name);
parentElement.AppendChild(propertyElement);
switch (property.Value.ValueKind)
{
case JsonValueKind.Object:
ConvertJsonToXml(property.Value, propertyElement, xmlDocument);
break;
case JsonValueKind.Array:
ConvertJsonArrayToXml(property.Value, propertyElement, xmlDocument);
break;
case JsonValueKind.String:
propertyElement.InnerText = property.Value.GetString();
break;
case JsonValueKind.Number:
propertyElement.InnerText = property.Value.GetRawText();
break;
case JsonValueKind.True:
case JsonValueKind.False:
propertyElement.InnerText = property.Value.GetBoolean().ToString();
break;
case JsonValueKind.Null:
propertyElement.InnerText = "null";
break;
}
}
}
static void ConvertJsonArrayToXml(JsonElement jsonArray, XmlElement parentElement, XmlDocument xmlDocument)
{
foreach (JsonElement element in jsonArray.EnumerateArray())
{
XmlElement arrayElement = xmlDocument.CreateElement("item");
parentElement.AppendChild(arrayElement);
switch (element.ValueKind)
{
case JsonValueKind.Object:
ConvertJsonToXml(element, arrayElement, xmlDocument);
break;
case JsonValueKind.Array:
ConvertJsonArrayToXml(element, arrayElement, xmlDocument);
break;
case JsonValueKind.String:
arrayElement.InnerText = element.GetString();
break;
case JsonValueKind.Number:
arrayElement.InnerText = element.GetRawText();
break;
case JsonValueKind.True:
case JsonValueKind.False:
arrayElement.InnerText = element.GetBoolean().ToString();
break;
case JsonValueKind.Null:
arrayElement.InnerText = "null";
break;
}
}
}
}
}
Для начала объявляем строку `jsonString`, которая содержит произвольный JSON, который мы хотим конвертировать в XML. Затем мы разбираем JSON-строку с помощью `JsonDocument`, создаем XML-документ с помощью `XmlDocument` и вызываем метод `ConvertJsonToXml`, передавая в него корневой элемент JSON и элемент `root` XML-документа.
Метод `ConvertJsonToXml` рекурсивно обходит каждый элемент JSON и создает соответствующие элементы XML. В зависимости от типа значения JSON-элемента, метод задает значение соответствующего элемента XML. Если значение JSON-элемента является JSON-объектом или массивом, метод вызывает себя снова, передавая соответствующий элемент XML в качестве родительского элемента.
Метод `ConvertJsonArrayToXml` аналогичен методу `ConvertJsonToXml`, но используется для конвертации JSON-массивов в XML.
Наконец, мы сохраняем XML-документ в файл или выводим его на консоль.
Таким образом, данное приложение на C# позволяет конвертировать произвольный JSON в XML с использованием класса JsonDocument из библиотеки System.Text.Json.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет