【问题标题】:Remove namespace xml of a property during XML serialization在 XML 序列化期间删除属性的命名空间 xml
【发布时间】:2019-01-26 03:12:00
【问题描述】:

我有一个这样的对象:

public class A {
 public int ID {get; set;} 
 public Name PName {get; set;} 
}

[XmlType(Namespace = "somenamespace")]
public class Name{
 public string FName {get; set;}
 public string LName {get; set;}
}

当我序列化这个时,我得到下面的 XML:

<A>
 <ID>1</ID>
 <PName>
  <FName xmlns="somenamespace">First Name</FNAME>
  <LName xmlns="somenamespace">Last Name</LNAME>
 </PName>
</A>

有没有办法在序列化过程中摆脱类“Name”的命名空间?

显然我不能只删除类“名称”的 XML 类型属性。

我已经尝试过这个解决方案(第一个答案),但它对我不起作用。 Omitting all xsi and xsd namespaces when serializing an object in .NET?

非常感谢,

灰烬。

【问题讨论】:

    标签: c# xml xml-serialization xmlserializer


    【解决方案1】:

    如果您不拥有Name 类型,您仍然可以通过在创建序列化程序时使用XmlAttributeOverrides 覆盖XML 属性来控制其序列化。

    例如:

    var overrides = new XmlAttributeOverrides();
    
    overrides.Add(typeof(Name), new XmlAttributes());
    
    var serializer = new XmlSerializer(
        typeof(A), overrides, null, null, string.Empty);
    

    请参阅 this fiddle 以获得工作演示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多