Как создать форматированный 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.
