1

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

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

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

4

2 回答 2

9

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

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

让我们举一个使用第三种方法 ( XmlSerializer) 的示例。

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

public class MyViewModel
{
    public string Foo { get; set; }
    public string Bar { get; set; }
}

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

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);
    }
}

控制器动作将非常标准:

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

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

于 2012-06-21T13:19:10.157 回答
0

如果您创建一个 XDocument,请将您的 XElements 添加到其中,然后在文档上调用 Save() 方法,它应该为您创建文件

展示如何从 XDocument 创建文件的博客文章

根据XDocument MSDN,您可以将其保存到流中或直接保存到文件中。如果您想将其作为操作返回,您可以查看此处如何在 MVC 中将 XML 字符串作为操作结果返回

于 2012-06-21T13:22:30.347 回答