Здравствуйте. Мне нужно создать xml-файл по средствам языка c#. Вот мой код создания xml-файла.
String str = "D:\\file.xml";
XmlTextWriter textWritter = new XmlTextWriter(str, Encoding.UTF8);
textWritter.Formatting = Formatting.Indented;
textWritter.WriteStartDocument();
textWritter.WriteStartElement("NAME");
textWritter.WriteString(TextBox1.Text);
textWritter.WriteEndElement();
textWritter.Close();
Но мне нужно создать несколько тегов на одном уровне. Так как каждый будет отвечать за 1 поле. Как в моём случае NAME. Но создать несколько тегов старт элементом оказалось нельзя. Как можно сделать то же самое только с несколькими полями. Вот как выглядит сейчас мой xml-файл.
А нужно что бы выглядел примерно вот так:
То есть мне нужны поля на 1 уровне в xml. Как это можно реализовать? Если можно в примере покажите мой код с исправлениями которые мне нужно сделать.
Вы пытаетесь создать невалидный xml. В корректном xml-файле должен быть корневой элемент а также много других достаточно очевидных правил. Если у вас есть сомнения, что вам xml допустим, то вы можете проверить его на каком-нибудь специальном сайте, например:
XML Validator
Еще один способ создания xml - использовать Linq2Xml.
Если взять класс из ответа @AGS17 :
public class Person
{
public string Name { get; set; }
public string Surname { get; set; }
public int Age { get; set; }
}
то метод для получения xml будет следующим
public static XElement CreateXML(Person person)
{
return new XElement(
"person",
new XElement("Name", person.Name),
new XElement("Surname", person.Surname),
new XElement("Age", person.Age));
}
Пример использования
var xml = CreateXML(new Person { Name = "Сергей", Age = 30, Surname = "Петров" });
xml.Save(path);
В результате будет получен такой xml
<?xml version="1.0" encoding="utf-8"?>
<person>
<Name>Сергей</Name>
<Surname>Петров</Surname>
<Age>30</Age>
</person>
Как насчет использовать прелести XmlSerializer?
Опишите вашу модель:
public class Person
{
public string Name { get; set; }
public string Surname { get; set; }
public int Age { get; set; }
}
И после серилизуйте ее:
var xmlSerializer = new XmlSerializer(typeof(Person));
var stringWriter = new StringWriter();
xmlSerializer.Serialize(stringWriter, person);
string xml = stringWriter.ToString();
Проверить!
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости