DataContractSerializerSettings类示例

时间:2013-09-23 22:18:03

标签: .net xml wcf xml-namespaces datacontractserializer

我正在寻找有关如何使用DataContractSerializerSettings类的示例。我感兴趣的有两个特定属性

  1. RootName
  2. RootNameSpace。
  3. 我可以在我的代码中使用它们来在输出xml中设置命名空间吗?

1 个答案:

答案 0 :(得分:1)

如果您正在创建DataContractSerializer,那么是。您可以创建DataContractSerializerSettings对象,并使用RootName设置RootNamespace和/或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; }
}