2012-10-04 8 views
5

実行時にオブジェクトまたはクラスのxmlrootを設定する方法はありますか?XMLRootを属性ではなくコードで指定できますか?

[XmlRoot("data")] 
public class MyRoot { 
    [XmlElement("bar")] 
    public List<RemoteHost> Hosts {get;set;} 
} 

この場合、MyRootクラスを変更するオプションはありません。 XmlSerializerを使用してオブジェクトをXMLにシリアル化する前に、ルート名を「データ」と呼ぶことを指定したいと思います。

答えて

9

はい!単純に:

var serializer = new XmlSerializer(typeof(MyRoot), 
    new XmlRootAttribute("data")); 

またはさらに完全には、XmlAttributeOverridesを参照してください。ただし、これらのいずれかを使用すると、のキャッシュを必要とし、シリアライザインスタンスを再利用する必要があります。そうしないと、アセンブリがリークします。

関連する問題