MVC3使用Linq返回XML文件到XML

Nil*_*Pun 1 linq-to-xml asp.net-mvc-3

我正在尝试从C#List生成XML文档.xml文档必须遵守第三方XML Schema.

我已经看过XSD2CODE工具,但没有得到任何结果.

有人可以帮我解决如何使用LINQ to xml生成XML文件并使用MVC3返回XML文件.

Dar*_*rov 9

LINQ to XML用于查询XML,而不是生成.如果要生成XML文件,还有其他技术:

但无论您选择采用哪种XML生成技术,我都建议您编写一个自定义操作结果来执行此作业,而不是使用XML生成管道污染您的控制器,这绝对不是它的责任.

让我们使用第三种方法(XmlSerializer)进行示例.

假设您已定义了要转换为XML的视图模型:

public class MyViewModel
{
    public string Foo { get; set; }
    public string Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我们可以编写一个自定义操作结果来执行此转换:

public class XmlResult : ActionResult
{
    public XmlResult(object data)
    {
        if (data == null)
        {
            throw new ArgumentNullException("data");
        }
        Data = data;
    }
    public object Data { get; private set; }

    public override void ExecuteResult(ControllerContext context)
    {
        var response = context.HttpContext.Response;
        response.ContentType = "text/xml";
        var serializer = new XmlSerializer(Data.GetType());
        serializer.Serialize(response.OutputStream, Data);
    }
}
Run Code Online (Sandbox Code Playgroud)

并且控制器动作将非常标准:

public ActionResult Index()
{
    var model = new MyViewModel
    {
        Foo = "foo",
        Bar = "bar"
    };
    return new XmlResult(model);
}
Run Code Online (Sandbox Code Playgroud)

您可能还想检查ASP.NET MVC 4 Web API,这使得这些场景变得非常简单.