gpt4 book ai didi

紧凑 .net 和常规 .net 之间的 C# 序列化/反序列化

转载 作者:行者123 更新时间:2023-11-30 22:28:55 28 4
gpt4 key购买 nike

我目前正在尝试解决一个奇怪的问题。我找不到太多相关信息。

简而言之:

当反序列化一个 xml 序列化对象时,我得到了一个正确对象类型的实例,但我只得到了对象内部的默认值。

长话短说:

序列化和反序列化发生在两个不同的平台上。一种是 .net 紧凑型框架(适用于 Windows 手机),另一种是常规 .net 框架。

在同一个平台上序列化然后反序列化会产生一个正确填充的对象,只有当一个序列化的字符串被发送到另一个平台时才会出现这个问题。

我还从另一个服务中获取了测试 xml 文件,该服务将为我的服务提供数据,这些 xml 文件反序列化正确。

细节:

生成的 XML 因平台而异。 (注意,这些是内部 xml 结构的片段,我在其中识别出重复出现的差异。阅读:Unit is not a root node)

客户端(手机,紧凑型框架)

<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 生成。

问题:

有人对这个问题有任何提示或资源吗?

最佳答案

两个平台是否使用相同的编码?我从手持条码扫描器生成的 Xml 能够被 PC 上的 VFP 程序读取。无论如何,我更喜欢使用 XmlTextWriter 而不是 XmlSerializer。

关于紧凑 .net 和常规 .net 之间的 C# 序列化/反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10501392/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com