我正在尝试从 C# 列表生成 XML 文档。xml 文档必须遵守第三方 XML Schema。
我看过 XSD2CODE 工具,但没有得到任何结果。
有人可以帮助我如何使用 LINQ to xml 生成 XML 文件并使用 MVC3 返回 XML 文件。
我正在尝试从 C# 列表生成 XML 文档。xml 文档必须遵守第三方 XML Schema。
我看过 XSD2CODE 工具,但没有得到任何结果。
有人可以帮助我如何使用 LINQ to xml 生成 XML 文件并使用 MVC3 返回 XML 文件。
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,它使这些场景变得非常简单。
如果您创建一个 XDocument,请将您的 XElements 添加到其中,然后在文档上调用 Save() 方法,它应该为您创建文件
根据XDocument MSDN,您可以将其保存到流中或直接保存到文件中。如果您想将其作为操作返回,您可以查看此处如何在 MVC 中将 XML 字符串作为操作结果返回