C# 从generate xsd类更改ElementName

C# 从generate xsd类更改ElementName,c#,xsd,C#,Xsd,使用xsd.exe工具,从xsd文件生成类。 我想更改根元素的名称,因为XmlRootElementAttribute不能重复。因此,理想情况下,我希望xsd工具生成如下所示的部分类: ... [System.Xml.Serialization.XmlRootAttribute(ElementName="Request", IsNullable=false)] public partial class SendMessage { ... } 但我不知道如何更改ElementName属性 谢谢

使用xsd.exe工具,从xsd文件生成类。 我想更改根元素的名称,因为XmlRootElementAttribute不能重复。因此,理想情况下,我希望xsd工具生成如下所示的部分类:

...
[System.Xml.Serialization.XmlRootAttribute(ElementName="Request", IsNullable=false)]
public partial class SendMessage  { ... }
但我不知道如何更改ElementName属性


谢谢

我认为您的XSD定义了一个元素SendMessage,您希望注释是其他的,请在您的案例中请求

简而言之,答案是否定的,不能单独使用XSD.exe;该工具不允许使用可以自定义生成类名称的语法

这带来了答案的长版本。。。注释总是反映XML是什么。如果更改ElementName值,则生成的XML将不同。如果希望XML不同,那么应该改为更改模式文件


这是一个需要大量解释的问题,为什么一个人想要这个。。。为了得到肯定的答案,如“是”,这就是为什么。

为什么?因为在遗留系统中,我有一些消息是通过名称空间来区分的。例如我有。。。等等当类为generate.xsd.exe能够在不同的名称空间中生成输出时,这会产生冲突;看看命令行选项,尤其是/名称空间。这样,类可能具有相同的名称,但在不同的名称空间中。。。瞧,这是一场冲突这是一个解决方案,但它有几个缺点,首先您必须为每个Resquest创建一个名称空间,这并不是C名称空间的真正用途。第二,我必须按照它们各自的名称空间为所有请求加前缀,因为我将在同一个类中使用它们。但是谢谢你的主意。嗯。。。名称空间正是针对家具中的表与数据库中的表不同的这种情况。至于前缀,有很多方法;在文件顶部,使用SendRequest=Something.Request添加;使用Response=SomethingElse.Request。。。这应该涉及代码可读性。。。