我可以在没有对象类型的情况下为MVC Web API序列化Xml吗?

时间:2013-07-16 14:33:47

标签: c# .net xml

所以我正在编写我的第一个mvc页面,并且我正在尝试编写一系列路由以允许报告系统创建简单的报告。 xml很小,这是一个例子:

 <xml><root><item><value>23</value></item></root>

我试过了:

        using (StringWriter xmlStringWriter = new StringWriter())
        {
            using (XmlWriter xmlWriter =  XmlWriter.Create(xmlStringWriter))
            {

                  XmlWriter.WriteStartElement("root")
                  ...
            }
            return xmlStringWriter.ToString();
        }

但这显然会返回一个字符串,浏览器不会将其解释为xml。我也知道*如果你返回一个可序列化的对象,那么浏览器就知道将其解释为xml或json。所以我尝试定义一组对象以xml嵌套的方式相互保持:

[Serializable]
public class XmlReportRoot
{
    [System.Xml.Serialization.XmlAttribute("root")]
    public List<XmlReportItem> item { get; set; }

}

[Serializable]
public class XmlReportItem
{
    [System.Xml.Serialization.XmlAttribute("item")]
    public XmlReportValue value { get; set; }

}

[Serializable]
public class XmlReportValue
{
    [System.Xml.Serialization.XmlAttribute("value")]
    public string count { get; set; }
}

和:             XmlReportRoot xmlRoot = new XmlReportRoot();

        XmlReportItem xmlItem = new XmlReportItem();
        List<XmlReportItem> itemList = new List<XmlReportItem>();

        itemList.Add(xmlItem);

        XmlReportValue xmlValue = new XmlReportValue();
        xmlValue.count = newCustomers.ToString();

        xmlItem.value = xmlValue;

        xmlRoot.item = itemList;

        XmlSerializer xmlSer = new XmlSerializer(typeof(XmlReportRoot));
        xmlSer.Serialize(xmlRoot);  //this line doesn't work

但这只是感觉不对,我无法让序列化工作而不用担心文件流,我宁愿这样做。

所以我想我试图找到一种方法来做一些像XmlWriter但能够在没有对象类型的情况下序列化并返回它,而不必担心自定义可序列化对象类型。

1 个答案:

答案 0 :(得分:4)

使用XmlWriter.Create(Response.OutputStream)Response.ContentType = "application/xml"