如何使用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);