自动生成包含C#关键字元素的XSD类

时间:2016-07-08 12:52:22

标签: c# xsd deserialization xsd.exe

我使用XSD.exe从XSD生成类 - > C#,带自动序列化。

XSD的一个元素称为event,因为这是一个C#关键字,所生成的类名称为@event。我从来不知道这甚至是一个有效的类名,但它很难看。

我知道我无法控制XSD.exe的类名选择 - 它们映射到XSD元素名称。 BUT 有没有办法可以手动重命名我的@event类,C#/ .NET仍然知道如何进行序列化?我可以在类定义中添加一些属性吗?

显然,每次重新生成课程时我都要重做这个。

1 个答案:

答案 0 :(得分:0)

您可以使用控制序列化的属性来修饰类。

请参阅此MSDN文章:https://msdn.microsoft.com/en-us/library/2baksw0z(v=vs.110).aspx

MSDN文章对类名称有这样的说法:

  

有两个属性可以应用于一个类(并且只有一个   class):XmlRootAttribute和XmlTypeAttribute。这些属性是   非常相似。 XmlRootAttribute只能应用于一个类:   序列化时表示XML文档的开头的类   和关闭元素 - 换句话说,根元素。该   另一方面,XmlTypeAttribute可以应用于任何类,   包括根类。

[XmlRoot("NewGroupName")]
[XmlType("NewTypeName")]
public class Group{
    public Employee[] Employees;
}
  

如果编译了此类,则使用XML Schema Definition工具   要生成其架构,您将找到以下XML描述   基。

<xs:element name="NewGroupName" type="NewTypeName">
  

相反,如果您只是序列化该类的实例   可以在XML文档中找到NewGroupName。

<NewGroupName>
    . . .
</NewGroupName>