我从 Visual Studio 2010 创建了一个 XSD 文件,
然后我用xsd /c mydemo.xsd
为我生成类,以便我可以在运行时创建 XML 文件。
但是,当我使用该类、填充一些值并序列化该对象时,XML 文件对我来说看起来不太好。
这是我的 XSD 文件点击这里查看 http://dl.dropbox.com/u/284185/demo.xsd
我期望的 XML 文件是点击这里查看 http://dl.dropbox.com/u/284185/expected-output.xml(从 Visual Studio“示例 XML”生成)
但是当我尝试序列化它时,XML文件是这样的点击此处查看 http://dl.dropbox.com/u/284185/output.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>
但生成结果是这样的:
<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>
我实现的序列化报告的代码是:
http://msdn.microsoft.com/en-us/library/ms731073.aspx http://msdn.microsoft.com/en-us/library/ms731073.aspx
DataContractSerializer dcs = new DataContractSerializer(typeof(Report));
using (XmlDictionaryWriter xdw = XmlDictionaryWriter.CreateTextWriter(File.Create(@"C:\demo\schema\output.xml"), Encoding.UTF8))
{
dcs.WriteObject(xdw, report);
}
不知道为什么我不能使用“XmlSerializer”,当我使用它时,它会抱怨无法转换数组类型......
无法生成临时类(结果=1)。
错误 CS0030:无法将类型“ColumnValueType[]”转换为
'列值类型'
错误CS0029:无法将类型“ColumnValueType”隐式转换为
'列值类型[]'
那么,有人可以给我一些建议,我该如何修复我的 XML 格式???