2010-05-17 49 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匹配。