P.B*_*key 5 c# xml-serialization xsd.exe
我对 XSD.EXE 生成的类使用 XmlSerializer。
XmlSerializer serializer = new XmlSerializer(obj.GetType());
Run Code Online (Sandbox Code Playgroud)
呕吐
InvalidOperationException无法生成临时类 (result=1)。错误 CS0030:无法将类型“itemOrderItemsItem[]”转换为“itemOrderItemsItem”错误 CS0029:无法将类型“itemOrderItemsItem”隐式转换为“itemOrderItemsItem[]”
该修复(标记为<!--fix...-->下图)说一些愚蠢的元素添加到我的架构,但是这是行不通的。此修复程序已有五年历史。有解决方案吗?
<xs:sequence>
<xs:element name="item" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="model" type="xs:string" minOccurs="0" />
<xs:element name="description" type="xs:string" minOccurs="0" />
<xs:element name="material" type="xs:string" minOccurs="0" />
<xs:element name="lot" type="xs:string" minOccurs="0" />
<xs:element name="serial" type="xs:string" minOccurs="0" />
<xs:element name="transferQty" type="xs:string" minOccurs="0" />
<xs:element name="shipQty" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="tmp" type="xs:string" /><!--fix...-->
Run Code Online (Sandbox Code Playgroud)
如果您有以下形式的 XML
<items>
<item>
<model>10</model>
<description>Torque wrench</description>
<material>100</material>
<lot>3</lot>
<serial></serial>
<transferQty>1</transferQty>
<shipQty></shipQty>
</item>
<item>
//...
</item>
<item>
//...
</item>
</items>
Run Code Online (Sandbox Code Playgroud)
Xsd.exe将生成一个xsd:
<xs:element name="items" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="item" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="model" type="xs:string" minOccurs="0" />
<xs:element name="description" type="xs:string" minOccurs="0" />
<xs:element name="material" type="xs:string" minOccurs="0" />
<xs:element name="lot" type="xs:string" minOccurs="0" />
<xs:element name="serial" type="xs:string" minOccurs="0" />
<xs:element name="transferQty" type="xs:string" minOccurs="0" />
<xs:element name="shipQty" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
然后
xsd.exe“这个.xsd”/c
生成一个具有二维数组 (items[][]) 的类。我只想要一个一维数组。我改变了第一行:
<xs:element name="items" minOccurs="0"><!--got rid of maxOccurs (which is what causes the issue)-->
Run Code Online (Sandbox Code Playgroud)
现在可以了。我猜序列化器只是在二维数组上吐槽。幸运的是我不需要它们。
| 归档时间: |
|
| 查看次数: |
2693 次 |
| 最近记录: |