0

所以我正在编写我的第一个 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 的事情,但能够在没有对象类型的情况下序列化并返回它,而不必担心自定义可序列化对象类型。

4

1 回答 1

4

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

于 2013-07-16T14:41:51.133 回答