根據xml生成相應的class對象,聽起來很難其實很簡單,用xsd.exe就能辦到
打開vs 命令行運行xsd.exe 你的xml文件地址 空格/outputdir:存放xsd的地址
ok,這是生成了xsd文件
然后再運行xsd.exe xsd文件地址 空格/classes /outputdir:class地址
具體參數
xsd file.xdr [/outputdir:directory][/parameters:file.xml] xsd file.xml [/outputdir:directory] [/parameters:file.xml] xsd file.xsd {/classes | /dataset} [/element:element] [/enableLinqDataSet] [/language:language] [/namespace:namespace] [/outputdir:directory] [URI:uri] [/parameters:file.xml] xsd {file.dll | file.exe} [/outputdir:directory] [/type:typename [...]][/parameters:file.xml]
這個不是重點,重點是生成的calss能不也能用,也就是能不能序列化和反序列化並且與原數據沒任何差錯
如果你的xml很簡單,那么反序列或序列化肯定不會出什么錯,但是如果是特別復雜的xml那一定會報錯,一般報的都是無法將類型a[]轉換為類型類型a,或者反過來!
解決方案
不講什么原理之類的,只講怎么操作,其實原理我也不太懂,只是一個感覺。估計這就是只可意會不可言傳吧!
這里講的是反序列化,如果這個對象能反序列了,那序列就不用說了吧
錯誤無法將類型a[]轉換位類型a
這個就是說你的本類(它應該說是描述xml的類)也就是你生成的類與xml數據不一致,是生成類的數組不對了(具體也說不清,改的時候在對照xml的結構就能悟出一二了),把它改成類型a就行了
錯誤無法將類型a轉換位類型a[]
這個就是說xml映射的類與你(它應該說是描述xml的類)生成的類的屬性描述不一致所以它識別不了(具體也說不清,改的時候在對照xml的結構就能悟出一二了)
,所以你要將typeof里的改成a[]
這樣就ok了
歡迎指導---------------------------------------------------------------------