@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". Этот результат может быть передан в представление для отображения пользователю.