DOBON.NET DOBON.NETプログラミング掲示板過去ログ

オブジェクトの配列をXMLシリアライズする際のRoot名について

環境/言語:[XP/C#]
分類:[.NET]

SampleClassオブジェクトの配列の内容をXMLに保存する内容を参考に、
自作のクラスの配列をシリアライズしました。
(参考 http://dobon.net/vb/dotnet/file/xmlserializer.html 最下部)

このときにルート名の変更はどのように行えばよいのでしょうか?
サンプルと同じようにArrayOf[自作クラス名]と命名されており、
この名前を変更したいと思っています。

自作クラス宣言の上に[XmlRoot("ルート名")]と宣言してみましたが、
変わりはありませんでした。

アドバイスよろしくお願いいたします。
■No17814に返信(ななさんの記事)
> SampleClassオブジェクトの配列の内容をXMLに保存する内容を参考に、
> 自作のクラスの配列をシリアライズしました。
> (参考 http://dobon.net/vb/dotnet/file/xmlserializer.html 最下部)
> 
> このときにルート名の変更はどのように行えばよいのでしょうか?
> サンプルと同じようにArrayOf[自作クラス名]と命名されており、
> この名前を変更したいと思っています。

XmlSerializerのインスタンスを次のようにして作成してはどうでしょうか。

System.Xml.Serialization.XmlSerializer serializer1 =
    new System.Xml.Serialization.XmlSerializer(
        typeof(SampleClass[]), new XmlRootAttribute("ルート名"));
管理人様 お返事ありがとうございます。

アドバイスどおり適用してみたところ、ROOTを変更することができました!
ありがとうございます。

この発展系をお聞きしたいのですが、
NAMESPACEとROOTは同時に設定はできないのでしょうか?
もしくは、後付けでの設定などあるのでしょうか?

以下は名前空間を設定した場合のサンプルです。
これにROOTを設定する方法がございましたら、アドバイスお願いいたします。

XmlSerializerNamespaces myNamespaces = new XmlSerializerNamespaces();
myNamespaces.Add("TEST", "http://test.com/test");

XmlSerializer serializer = new XmlSerializer(typeof( SampleClass[] ), "http://test.com/test");
■No17873に返信(ななさんの記事)
> XmlSerializerNamespaces myNamespaces = new XmlSerializerNamespaces();
> myNamespaces.Add("TEST", "http://test.com/test");
>
> XmlSerializer serializer = new XmlSerializer(typeof( SampleClass[] ), "http://test.com/test");

myNamespacesはどのようにお使いでしょうか?正しく使用すれば、うまく行くと思いますが。

DOBON.NET | プログラミング道 | プログラミング掲示板