6

実行時にオブジェクトまたはクラスの xmlroot を設定する方法はありますか?

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

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

4

1 に答える 1

10

はい!単に:

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

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

于 2012-10-04T22:30:04.693 に答える