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

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

от hanna_jacobson , в категории: Другие , 2 года назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от aaron_armstrong , 2 года назад

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

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

от dan_farrell , год назад

@hanna_jacobson 

Вот пример кода, чтобы вывести XML или DataSet в ASP.NET MVC 3:

  1. Для вывода XML:
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. Для вывода DataSet:
 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-данные.