我目前正在尝试解决一个奇怪的问题。一个我找不到太多信息的。
简而言之:
反序列化 xml 序列化对象时,我得到了正确对象类型的实例,但我只得到对象内部的默认值。
更长的故事:
序列化和反序列化发生在两个不同的平台上。一个是 .net compact 框架(用于 windows 手机),另一个是常规 .net 框架。
在同一平台上进行序列化然后反序列化会产生正确填充的对象,仅当将序列化的字符串发送到另一个平台时才会出现问题。
我还从另一个服务获得了测试 xml 文件,该服务将为我的服务提供数据,这些 xml 文件可以正确反序列化。
细节:
生成的 XML 在平台之间略有不同。(注意,这些是来自内部 xml 结构的片段,我已经确定了重复出现的差异。阅读:单元不是根节点)
客户端(电话、紧凑型框架)
<Unit>
<UnitId xmlns="">555</UnitId>
<VehicleId xmlns="">555</VehicleId>
<EmployeeId xmlns="">004</EmployeeId>
</Unit>
服务器(常规 .net 服务器)
<Unit xmlns="">
<UnitId>555</UnitId>
<VehicleId>555</VehicleId>
<EmployeeId>004</EmployeeId>
</Unit>
从父系统(未知平台)
<Unit>
<UnitId>308</UnitId>
<VehicleId>307</VehicleId>
<EmployeeId>ASA 500</EmployeeId>
</Unit>
此外,父系统没有设置标准命名空间 (xmlns),而是在根节点中使用前缀,如下所示:
<amg:RequestFinishRoute xmlns:amg="http://beans.order.integration.tt.transware.se/order/trackingFinishRoute">
而我们通过序列化创建的数据给出:
<RequestFinishRoute xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://beans.order.integration.tt.transware.se/order/trackingFinishRoute">
我使用一个:
System.Xml.Serialization.XmlSerializer
序列化器进行序列化/反序列化(仅在紧凑框架中支持序列化器)。
执行此操作的代码由 xsd2code 生成。
问题:
有人有关于这个问题的任何提示或资源吗?