在XML序列化期间删除属性的名称空间xml

问题描述 投票:0回答:1

我有这样一个对象:

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”的命名空间?

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

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

提前谢谢了,

灰。

c# xml xml-serialization xmlserializer
1个回答
0
投票

如果您不拥有类型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

© www.soinside.com 2019 - 2024. All rights reserved.