1

C# リストから XML ドキュメントを生成しようとしています。xml ドキュメントは、サード パーティの XML スキーマに準拠している必要があります。

XSD2CODE ツールを見てきましたが、どこにも行きませんでした。

LINQ to xml を使用して XML ファイルを生成し、MVC3 を使用して XML ファイルを返す方法を教えてください。

4

2 に答える 2

9

LINQ to XML は、生成ではなく、XML のクエリに使用されます。XML ファイルを生成する場合は、他の手法があります。

  • XmlWriter
  • XDocument
  • XmlSerializerなどの 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 を確認することもできます。

于 2012-06-21T13:19:10.157 に答える
0

XDocument を作成する場合は、XElements を追加し、ドキュメントで Save() メソッドを呼び出して、ファイルを作成する必要があります。

XDocument からファイルを作成する方法を示すブログ投稿

XDocument MSDNによると、ストリームに保存するか、ファイルに直接保存できます。アクションとして返したい場合は、ここを見ることができますMVCでアクション結果としてXML文字列を返す方法

于 2012-06-21T13:22:30.347 に答える