2010-05-17 65 views
2

我想序列化的XML与以下方法的类的临时类:使用PSW5.xsdC#XML序列化 - 无法生成

XmlSerializer ser = new XmlSerializer(typeof(PSW5ns.PSW5)); 
StringReader stringReader; 
stringReader = new StringReader(response_xml); 
XmlTextReader xmlReader; 
xmlReader = new XmlTextReader(stringReader); 
PSW5ns.PSW5 obj; 
obj = (PSW5ns.PSW5)ser.Deserialize(xmlReader); 
xmlReader.Close(); 
stringReader.Close(); 

类PSW5由XSD.EXE自动生成给我的文件。 我已经为其他类做了相同的工作。现在我得到以下错误(运行时):

{"Unable to generate a temporary class (result=1).\r\nerror CS0030: 
Cannot convert type 'PSW5ns.TAX_INF[]' to 'PSW5ns.TAX_INF'\r\nerror CS0029: 
Cannot implicitly convert type 'PSW5ns.TAX_INF' to 'PSW5ns.TAX_INF[]'\r\n"} 

我很困惑,因为它适用于其他类一样。 我将不胜感激任何建议。 感谢inadvance, Giorgos

回答

2

似乎有关于SO的other相关主题。 显然你可以通过手动编辑输出文件来解决它。

0

看起来你是从哪个同名的单个元素成员(这是一个PSW5ns.TAX_INF)定义为类的数组成员(这是一个PSW5ns.TAX_INF[]阵列)的XML文件加载。
您确定已将该类的特定状态序列化为您要加载的XML文档吗?如果您更改了类并尝试加载与当前架构不匹配的旧状态,则可能会出现类似这样的错误。

1

看看xsd和这个类 - 其中一个将定义一个TAX_INF对象,另一个将定义一个TAX_INF[]数组或集合。

您正在看到的问题是,序列化程序无法将单个对象转换为集合。

要解决此问题,请确保xsd和class匹配。