C# 如何要求XSD.exe为我生成合适的类,以便我可以创建一个好的XML

C# 如何要求XSD.exe为我生成合适的类,以便我可以创建一个好的XML,c#,xml-serialization,xsd,xsd.exe,C#,Xml Serialization,Xsd,Xsd.exe,我已经从Visual Studio 2010创建了一个XSD文件 然后我使用xsd/cmydemo.xsd为我生成类,这样我就可以在运行时创建一个XML文件 但是,当我使用该类、填充一些值并序列化对象时,XML文件对我来说并不好看 这是我的XSD文件 我所期望的XML文件是 (从Visual Studio“示例XML”生成) 但是当我尝试序列化它时,XML文件是这样的 格式完全不同 e、 g 期望: <ColumnInfo> <Column Type="Type1" Di

我已经从Visual Studio 2010创建了一个XSD文件

然后我使用
xsd/cmydemo.xsd
为我生成类,这样我就可以在运行时创建一个XML文件

但是,当我使用该类、填充一些值并序列化对象时,XML文件对我来说并不好看

这是我的XSD文件

我所期望的XML文件是 (从Visual Studio“示例XML”生成)

但是当我尝试序列化它时,XML文件是这样的

格式完全不同

e、 g

期望:

<ColumnInfo> 
  <Column Type="Type1" DisplayValue="DisplayValue1" Key="Key1"/> 
  <Column Type="Type2" DisplayValue="DisplayValue2" Key="Key2"/> 
  <Column Type="Type3" DisplayValue="DisplayValue3" Key="Key3"/> 
</ColumnInfo>
不知道为什么我不能使用“XmlSerializer”,当我使用它时,它会抱怨无法强制转换数组类型

无法生成临时类(结果=1)。
错误CS0030:无法将类型“ColumnValueType[]”转换为 “ColumnValueType”
错误CS0029:无法将类型“ColumnValueType”隐式转换为 “ColumnValueType[]”


那么,有没有人能给我一些建议,我如何修复我的XML格式??

数据契约序列化程序与XmlSerializer有不同的规则。为什么不先试试XmlSerializer,然后看看输出是否“正确”。

xsd.exe上有一个bug-请看以下博文:

请不要在标题中添加“[C#]”之类的内容。把它们留在标签里。@John好的。。。thx,我会记住你的意思是使用XmlSerializer处理从XSD.exe生成的“类”吗?。。。它们彼此不工作,XmlSerializer无法将类型大小写排列到xml元素
<columnInfoField>
  <ColumnType>
    <displayValueField>Display value for key 1</displayValueField>
    <keyField>key1</keyField>
    <typeField>string</typeField>
  </ColumnType>
  <ColumnType>
    <displayValueField>Display value for key 2</displayValueField>
    <keyField>key2</keyField>
    <typeField>int</typeField>
  </ColumnType>
  <ColumnType>
    <displayValueField>Display value for key 3</displayValueField>
    <keyField>key3</keyField>
    <typeField>long</typeField>
  </ColumnType>
</columnInfoField>
DataContractSerializer dcs = new DataContractSerializer(typeof(Report));
using (XmlDictionaryWriter xdw = XmlDictionaryWriter.CreateTextWriter(File.Create(@"C:\demo\schema\output.xml"), Encoding.UTF8))
{
  dcs.WriteObject(xdw, report);
}