1
我正在寻找如何使用DataContractSerializerSettings类的示例。有我感兴趣的DataContractSerializerSettings类示例
- ROOTNAME
- RootNameSpace两个特定的属性。
我可以在我的代码中使用它们来在输出xml中设置命名空间吗?
我正在寻找如何使用DataContractSerializerSettings类的示例。有我感兴趣的DataContractSerializerSettings类示例
我可以在我的代码中使用它们来在输出xml中设置命名空间吗?
如果你正在创建DataContractSerializer
,那么是的。您可以创建一个DataContractSerializerSettings
对象,并使用XmlDictionary
设置RootName
和/或RootNamespace
以创建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; }
}
,我没有看到,添加了'[DataContract(命名空间=“...”)]'我的课改变了'd1p1'命名空间*前缀* - 我看到它的作用等同于上面的settings.RootNamespace行;它会更改该前缀的“值”。 – bc3tech