Как вывести xml или dataset в asp.net mvc 3?

Пользователь

от hanna_jacobson , в категории: Другие , 8 месяцев назад

Как вывести xml или dataset в asp.net mvc 3?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от aaron_armstrong , 8 месяцев назад

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