2009-06-09 12 views
3

私は現在、単一のテーブルに基づいて単一のLinq to Sqlクラスを持っている非常に単純なアプリケーションを持っています。Linq.Table to XML

Linq To SqlクラスのDataContextを使用して、テーブル内のすべての行をシリアル化する必要があります。

これを行うにはどうすればよいですか?

これは私の現在のコードです: "Token StartElement in state Epilog would result in an invalid XML document."

私も試してみました:それは次の例外スローしかし

var db = new MyEntityDataContext(); 
    Stream fs = new FileStream("Output.xml", FileMode.Create); 
    XmlWriter writer = new XmlTextWriter(fs, Encoding.Unicode);    

    serializer = new XmlSerializer(typeof(MyEntity)); 
    foreach (var row in db.MyEntitys) 
    { 
     // Serialize object to XML 
     serializer.Serialize(writer,row); 
    } 

    writer.Close(); 

XmlSerializer serializer2 = new XmlSerializer(db.MyEntitys.GetType()); 

をこれは "To be XML serializable, types which inherit from IEnumerable must have an implementation of Add(System.Object) at all levels of their inheritance hierarchy." 例外がスローされます。

答えて

2

XmlSerializerは、関連性があると素晴らしいとは限りません。データコンテキストサーフェスでシリアル化を有効にすると、(WCF)データコントラクトアトリビュートが追加されます。おそらくちょうど使用します:

+0

Linq.TableのToList()を使用すると、トリックが実行され、DataContractSerializerまたはXmlSerializerを使用して動作するようになりました。それを自分で試してみましたか?ありがとう。 結果のXmlファイル、特にルート要素で要素名を調整する簡単な方法はありますか? – TonE

+0

私は告白します、私は試してみる必要はありませんでした...私は分かりません。 XmlSerializerでは、おそらく属性定義を受け入れるオーバーロードの1つですか? –

+0

これは、 'XmlSerializer(Type型、XmlRootAttributeルート);で指定できます。 もう一度お世話になります。 – TonE