我使用XSD.exe从XSD生成类 - > C#,带自动序列化。
XSD的一个元素称为event
,因为这是一个C#关键字,所生成的类名称为@event
。我从来不知道这甚至是一个有效的类名,但它很难看。
我知道我无法控制XSD.exe的类名选择 - 它们映射到XSD元素名称。 BUT 有没有办法可以手动重命名我的@event
类,C#/ .NET仍然知道如何进行序列化?我可以在类定义中添加一些属性吗?
显然,每次重新生成课程时我都要重做这个。
答案 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>