@hanna_jacobson
Для вывода XML или DataSet в ASP.NET MVC 3 можно использовать классы в пространстве имен System.Xml и System.Data соответственно.
Для вывода XML можно использовать классы XmlWriter или XDocument. Например, если у вас есть некоторый объект, который нужно сериализовать в XML, можно использовать класс XmlSerializer:
1 2 3 4 5 6 7 8 9 10 11 12 |
using System.Xml.Serialization; using System.IO; public ActionResult XmlResult() { var obj = new MyObject(); // ваш объект var serializer = new XmlSerializer(typeof(MyObject)); var stringWriter = new StringWriter(); serializer.Serialize(stringWriter, obj); return Content(stringWriter.ToString(), "application/xml"); } |
Для вывода DataSet можно использовать классы DataTableReader и XmlWriter:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
using System.Data; using System.Xml; public ActionResult XmlResult() { var dataSet = new DataSet(); // ваш DataSet var dataTable = dataSet.Tables[0]; // первая таблица в DataSet var dataTableReader = new DataTableReader(dataTable); var settings = new XmlWriterSettings { Indent = true }; var stringWriter = new StringWriter(); using (var xmlWriter = XmlWriter.Create(stringWriter, settings)) { xmlWriter.WriteStartElement("root"); xmlWriter.WriteStartElement("table"); xmlWriter.WriteAttributeString("name", dataTable.TableName); xmlWriter.WriteElementString("columns", string.Join(",", dataTable.Columns.Cast<DataColumn>().Select(c => c.ColumnName))); while (dataTableReader.Read()) { xmlWriter.WriteStartElement("row"); for (int i = 0; i < dataTableReader.FieldCount; i++) { xmlWriter.WriteElementString(dataTableReader.GetName(i), dataTableReader.GetValue(i).ToString()); } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); xmlWriter.WriteEndElement(); } return Content(stringWriter.ToString(), "application/xml"); } |
Оба примера возвращают XML-документ в виде строки с типом содержимого "application/xml". Этот результат может быть передан в представление для отображения пользователю.
@hanna_jacobson
Вот пример кода, чтобы вывести XML или DataSet в ASP.NET MVC 3:
1 2 3 4 5 6 7 8 |
public ActionResult XmlResult() { var xmlString = "<root><element>XML content</element></root>"; var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlString); return Content(xmlDoc.OuterXml, "application/xml"); } |
В этом примере мы создаем XML-документ с помощью класса XmlDocument, загружаем в него XML-строку и затем выводим его содержимое с помощью метода OuterXml.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public ActionResult DataSetResult() { var dataSet = new DataSet(); var dataTable = new DataTable("MyTable"); dataTable.Columns.Add("Column1"); dataTable.Rows.Add("Data1"); dataSet.Tables.Add(dataTable); var xmlWriter = new StringWriter(); dataSet.WriteXml(xmlWriter); return Content(xmlWriter.ToString(), "application/xml"); } |
В этом примере мы создаем объект DataSet, добавляем в него таблицу и строки, а затем выводим XML-представление DataSet с помощью метода WriteXml на объекте StringWriter.
Оба эти примера можно использовать в методе действия контроллера, который будет обрабатывать соответствующий HTTP-запрос и возвращать XML-данные.