DataContractSerializerSettings クラスの使用方法の例を探しています。私が興味を持っている2つの特定のプロパティがあります
- ルート名
- ルートネームスペース。
コードでそれらを使用して、出力 xml に名前空間を設定できますか?
DataContractSerializerSettings クラスの使用方法の例を探しています。私が興味を持っている2つの特定のプロパティがあります
コードでそれらを使用して、出力 xml に名前空間を設定できますか?
を作成している場合はDataContractSerializer
、はい。DataContractSerializerSettings
オブジェクトを作成し、 RootName
and/orRootNamespace
を使用して を設定し、XmlDictionary
を作成できますXmlDictionaryString
。次に例を示します。
var settings = new DataContractSerializerSettings();
var xmlDictionary = new XmlDictionary();
settings.RootName = xmlDictionary.Add("MyRootName");
settings.RootNamespace = xmlDictionary.Add("MyNamespace");
var serializer = new DataContractSerializer(typeof(MyClass), settings);
シリアル化された XML のルート要素の名前は "MyRootName" になり、xmlns 属性は "MyNamespace" になります。次に例を示します。
<MyRootName xmlns:d1p1="MyDefaultNamespace" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="MyNamespace">
デフォルトの名前空間は引き続き「d1p1」エイリアスに含まれるため、これらの設定を使用してその名前空間をオーバーライドすることはできないと思います。これを行う最も簡単な場所は、DataContract
属性を使用してクラスが定義されている場所です。
[DataContract(Namespace = "MyDefaultNamespace")]
public class MyClass
{
public string MyProperty { get; set; }
}