#c# #xml
#c# #xml
Вопрос:
Я пытаюсь преобразовать объект c #, содержащий список, в XML. Список отлично отображается в виде:
<image>dummy</image>
<image>dummy2</image>
<image>dummy3</image>
и так далее. Я хочу, чтобы теги были уникальными, как:
<image_1>dummy</image_1>
<image_2>dummy2</image_2>
<image_3>dummy3</image_3>
Но я не совсем уверен, как получить этот результат.
Приветствуется любой ввод
Комментарии:
1. Я бы рекомендовал не делать этого, это затрудняет создание XSD (xml-схемы) для вашего XML-документа.
2. Добро пожаловать в StackOverflow. Пожалуйста, поделитесь своим кодом и предоставьте более подробную информацию о вашей реализации.
3. Более «дружественным к XML» подходом было бы иметь коллекцию элементов с тем же тегом ‘image’, но с атрибутом , который вы используете в качестве уникального идентификатора.
<imageCollection><image id="image_1">dummy 1</image><image id="image_2">dummy 2</image></imageCollection>
Может ли это быть приемлемым для вас? Или еще, не могли бы вы объяснить фактическую проблему, которая заставила вас сделать вывод, что нужны уникальные теги? (для меня это выглядит как проблема X / Y )4. @Pac0 Да, я знаю. Это немного странно, но именно так предпочитает заказчик, поэтому я просто пытаюсь дать им то, что они хотят.
5. хорошо, я не знаю подробностей, но с их стороны это звучит так же, проблема X / Y. Возможно, вы бы проделали лучшую работу (более удовлетворяющую как вашего клиента, так и вас самих), чтобы лучше понять, в чем заключается их реальная потребность. Просто совет, я понимаю, что у вас может не быть доступа к этому.
Ответ №1:
Грубый набросок решения:
Stream stream = ... // your output stream
XmlWriter xml = new XmlWriter(stream)
xml.WriteStartDocument();
int index = 0;
foreach (var x in list) {
xml.WriteStringElement("index_" index , x.ToString());
}
xml.Close();
https://learn.microsoft.com/en-us/dotnet/api/system.xml.xmlwriter?view=netcore-3.1