根据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了 欢迎指导---------------------------------------------------------------------