根据xml生成相应的对象类

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

 
 
原文地址:https://www.cnblogs.com/weiwin/p/xmltoclass.html