在 XML 序列化期间删除 属性 的命名空间 xml
Remove namespace xml of a property during XML serialization
我有一个这样的对象:
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>
有没有办法在序列化过程中去掉class"Name"的命名空间?
显然我不能只删除 class "Name" 的 XML 类型属性。
我已经尝试过这个解决方案(第一个答案),但它对我不起作用。 Omitting all xsi and xsd namespaces when serializing an object in .NET?
非常感谢,
灰.
如果您不拥有类型 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。
我有一个这样的对象:
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>
有没有办法在序列化过程中去掉class"Name"的命名空间?
显然我不能只删除 class "Name" 的 XML 类型属性。
我已经尝试过这个解决方案(第一个答案),但它对我不起作用。 Omitting all xsi and xsd namespaces when serializing an object in .NET?
非常感谢,
灰.
如果您不拥有类型 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。