1

DataContractSerializerSettings クラスの使用方法の例を探しています。私が興味を持っている2つの特定のプロパティがあります

  1. ルート名
  2. ルートネームスペース。

コードでそれらを使用して、出力 xml に名前空間を設定できますか?

4

1 に答える 1

1

を作成している場合はDataContractSerializer、はい。DataContractSerializerSettingsオブジェクトを作成し、 RootNameand/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; }
}
于 2014-02-13T14:55:47.980 に答える