如何使用XML Serializer将多个xml命名空间应用于同一个类

我正在尝试使用WCF生成一个代理类,当序列化时,将下面的类和实例转换为下面的XML。

但是,当我尝试将命名空间应用于类时,它们会被错误地插入,或者根本不插入。

我究竟做错了什么? 我怎样才能解决这个问题?

提前谢谢了。

class级结构:

[XmlRoot] public class Request { public int Id public Name Name {get;set;} } [XmlRoot] public class Name { [XmlAttribute] public bool test {get;set;} public string FirstName {get;set;} public string LastName {get;set;} } 

期望的XML结构(多余的XML修剪)

  0  Dan Atkinson   

如果你在谈论(xml)属性(即 ),那么你不是在谈论DataContractSerializer – 所以也许坚持使用XmlType等…类似于:

 [XmlRoot(Namespace="Data/Main")] public class Request { [XmlElement(Namespace = "Data/All")] public int Id { get; set; } [XmlElement(Namespace="Data/All")] public Name Name {get;set;} } [XmlType(Namespace="Data/All")] public class Name { [XmlAttribute("test")] public bool Test {get;set;} public string FirstName {get;set;} public string LastName {get;set;} } 

那没有别名 – 但它似乎是正确的,至少……

将上面的属性与“Guard”的XmlSerializerNamespaces代码合并,它应该在那里……

(这里称为“警卫”,但无论如何这是维基…)

  Request req = new Request { Id = 0, Name = new Name { Test = true, FirstName = "Dan", LastName = "Atkinson" } }; XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("x1", "Data/Main"); ns.Add("x2", "Data/All"); new XmlSerializer(req.GetType()).Serialize(Console.Out, req,ns);