在 Dotnet 5

时间:2021-08-01 23:04:19

标签: c# .net-core .net-5

在 dotnet 核心 (.net 5) 中反序列化 xml 字符串的大小是否有限制?

一切正常。但是当我开始获得 2500 多行 xml 字符串时,我得到了 '值对于无符号字节来说太大或太小'。

疑难解答:

  • 测试了相同 xml 数据的旧版本(有 2000 多行,但少于新的)。所以它是数据相关的。

  • 使用 Visual Studio 的 Paste as XML 进行测试以从 xml 生成类。新类和旧类完全相同。所以结构/模式是 不变。

  • 在几个xml验证工具中测试了新的xml,都报告它没有错误。所以这不是数据错误。

从上面看来我达到了一些限制。

我尝试过的事情:

using System.Xml.Serialization;
using System.Text;

var stringReader = new StringReader(xmlStr);
var serializer = new XmlSerializer(typeof(MyClass));
var obj1 = serializer.Deserialize(stringReader) as MyClass;



var bytes = Encoding.UTF8.GetBytes(xmlStr);
MemoryStream memStream = new(bytes);
var obj2 = serializers.Deserialize(memStream) as MyClass;

我尝试定位不同的 net5.0-windows7.0net5.0-windows10.0.20348.0net5.0-10.0.19041.0

有什么想法吗? (对不起,如果我的问题很原始,我正在学习)。

1 个答案:

答案 0 :(得分:0)

问题是我在 Visual Studio 中使用了 Past XML as Class 剪贴板命令。它似乎已将 byte 分配给来自 xml string 的一些整数值,以及一些分配的 ushort。 我在 Visual Studio 生成的类中将所有 byte 替换为 ushort,然后一切正常!