C# リストから XML ドキュメントを生成しようとしています。xml ドキュメントは、サード パーティの XML スキーマに準拠している必要があります。
XSD2CODE ツールを見てきましたが、どこにも行きませんでした。
LINQ to xml を使用して XML ファイルを生成し、MVC3 を使用して XML ファイルを返す方法を教えてください。
C# リストから XML ドキュメントを生成しようとしています。xml ドキュメントは、サード パーティの XML スキーマに準拠している必要があります。
XSD2CODE ツールを見てきましたが、どこにも行きませんでした。
LINQ to xml を使用して XML ファイルを生成し、MVC3 を使用して XML ファイルを返す方法を教えてください。
LINQ to XML は、生成ではなく、XML のクエリに使用されます。XML ファイルを生成する場合は、他の手法があります。
ただし、どの XML 生成手法を採用する場合でも、コントローラーが責任を負わない XML 生成配管でコントローラーを汚染するのではなく、このジョブを実行するカスタム アクション結果を作成することをお勧めします。
3 番目のアプローチを使用した例を見てみましょう ( 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 からファイルを作成する方法を示すブログ投稿
XDocument MSDNによると、ストリームに保存するか、ファイルに直接保存できます。アクションとして返したい場合は、ここを見ることができますMVCでアクション結果としてXML文字列を返す方法