Как создать форматированный XML-документ в памяти в C#

В этом примере используется XmlTextWriter для создания форматированного XML-документа в памяти и отображения его в текстовом поле. Когда вы нажимаете кнопку «Перейти», выполняется следующий код.

private void btnGo_Click(object sender, EventArgs e)
{
    MemoryStream memory_stream = new MemoryStream();
    XmlTextWriter xml_text_writer  = 
        new XmlTextWriter(memory_stream, System.Text.Encoding.UTF8);

    // Используйте отступ, чтобы результат выглядел красиво.
    xml_text_writer.Formatting = Formatting.Indented;
    xml_text_writer.Indentation = 4;

    // Записываем объявление XML.
    xml_text_writer.WriteStartDocument(true);

    // Запуск узла Employees.
    xml_text_writer.WriteStartElement("Employees");

    // Записываем элементы Employee.
    MakeEmployee(xml_text_writer, "Albert", "Anders", 11111);
    MakeEmployee(xml_text_writer, "Betty", "Beach", 22222);
    MakeEmployee(xml_text_writer, "Chuck", "Cinder", 33333);

    // Завершить узел Employees.
    xml_text_writer.WriteEndElement();

    // Завершение документа.
    xml_text_writer.WriteEndDocument();
    xml_text_writer.Flush();

    // Используйте StreamReader для отображения результата.
    StreamReader stream_reader = new StreamReader(memory_stream);

    memory_stream.Seek(0, SeekOrigin.Begin);
    txtResult.Text = stream_reader.ReadToEnd();
    txtResult.Select(0, 0);

    // Закройте XmlTextWriter.
    xml_text_writer.Close();
}

Этот код создает к нему MemoryStream и XmlTextWriter. XmlTextWriter имеет такие методы, как WriteStartDocument, WriteStartElement и WriteEndElement для создания фрагментов XML-файла.

Программа устанавливает XmlTextWriter, чтобы отделить ее вывод, а затем вызывает метод WriteStartDocument, чтобы запустить XML-документ.

Он вызывает метод WriteStartElement для создания тега & lt; Employees & gt;. Затем он вызывает метод MakeEmployee несколько раз, чтобы сделать элементы Employee. Он закрывает элемент Employees, вызывая WriteEndElement, чтобы создать тег & lt; / Employees & gt;. Затем он закрывает документ, вызывая WriteEndDocument.

Чтобы отобразить результат, программа создает StreamReader, прикрепленный к MemoryStream. Он перемещается в начало потока и использует читательский метод ReadToEnd для чтения содержимого потока.

В следующем коде показан способ MakeEmployee.

// Добавить узел Employee в документ.
private void MakeEmployee(XmlTextWriter xml_text_writer, 
    String first_name, String last_name, int emp_id)
{
    // Запустите элемент Employee.
    xml_text_writer.WriteStartElement("Employee");

    // Записываем имя FirstName.
    xml_text_writer.WriteStartElement("FirstName");
    xml_text_writer.WriteString(first_name);
    xml_text_writer.WriteEndElement();

    // Записываем LastName.
    xml_text_writer.WriteStartElement("LastName");
    xml_text_writer.WriteString(last_name);
    xml_text_writer.WriteEndElement();

    // Записываем EmployeeId.
    xml_text_writer.WriteStartElement("EmployeeId");
    xml_text_writer.WriteString(emp_id.ToString());
    xml_text_writer.WriteEndElement();

    // Закрываем элемент Employee.
    xml_text_writer.WriteEndElement();
}

Метод MakeEmployee просто использует XmlTextWriter WriteStartElement, WriteString и WriteEndElement для создания элемента Employee.

Источник: http://csharphelper.com/blog/2014/09/build-a-formatted-xml-document-in-memory-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Adblock
detector