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