2016-05-01 7 views
1

SQL ServerからXMLを取得していて、適切なHumanクラスでデシリアライズすることができます。私はC#:別のクラス名でXMLをシリアライズおよび逆シリアル化する

public class Boy 
{ 
public string name {get;set;} 
} 

ソリューション

+4

"解決策を教えてください"?それはStackOverflowの仕組みではありません。あなたが試したこと、なぜそれが最初にうまくいかなかったのかを教えてください。どのようなエラーが出ていますか、どのような結果が予想されていますか、現時点での実際の結果は何ですか?あなたが直面している問題がわかっているなら、助けがはるかに簡単です。 – Patrick

+0

人間、少年、名前の3つのクラスが必要です。少年と人間の両方で同じ名前のクラスを使うことができます。 – jdweng

答えて

2

あなたに与えてください新しいクラス名で再びそれをデシリアライズしたいので

public class Human 
{ 
public string name {get;set;} 
} 

nameプロパティの値を与えた後、私は、別のルート名でそれをシリアル化したいですルート要素名を変更できます。シリアライザでXmlRootAttributeパラメータを渡します。

var human = new Human { name = "Smit" }; 

var xs = new XmlSerializer(typeof(Human), new XmlRootAttribute("Boy")); 

using (var fs = new FileStream("test.xml", FileMode.Create)) 
    xs.Serialize(fs, human); 
+3

'XmlRialAttribute'を使って' XmlSerializer'を構築する場合は、後で再利用できるようにシリアライザをキャッシュする必要があります。そうしないと、リソースリークが深刻になります。 [ドキュメント](https://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx)および[XmlRootAttributeを指定する際のXmlSerializerのパフォーマンスの問題](https://stackoverflow.com)を参照してください。/questions/1534810)または[StreamReaderとXmlSerializerを使用したメモリリーク](https://stackoverflow.com/questions/23897145)を参照してください。 – dbc

関連する問題