【发布时间】:2012-10-02 17:28:42
【问题描述】:
我从 Visual Studio 2010 创建了一个 XSD 文件,
然后我使用xsd /c mydemo.xsd为我生成类,这样我就可以在运行时创建一个XML文件。
但是,当我使用该类、填写一些值并序列化对象时,XML 文件对我来说并不好看。
这是我的 XSD 文件Click here to see
我期望的 XML 文件是 Click here to see (从 Visual Studio“示例 XML”生成)
但是当我尝试序列化它时,XML文件是这样的CLick here to see
格式完全不同
例如
期待:
<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
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 格式???
【问题讨论】:
-
请不要在标题中添加“[C#]”之类的内容。只需将它们留在标签中即可。
-
@John 好的...谢谢,我会记住的
标签: c# xml-serialization xsd xsd.exe