【发布时间】:2021-08-01 23:04:19
【问题描述】:
在 dotnet core (.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.0、net5.0-windows10.0.20348.0、net5.0-10.0.19041.0
有什么想法吗? (对不起,如果我的问题很原始,我正在学习)。
【问题讨论】:
-
值对于无符号字节来说太大或太小 - 这是一个 数据 问题,在某处你的值小于 0 或大于 255,您尝试分配给
byte -
@stuartd,我有像`
`这样的属性,你指的是什么? -
您是否尝试将该值存储为
byte? -
嗯。我刚刚查看了 Visual Studio 粘贴的内容.. 一些字段设置为 ushort,其他字段设置为 byte.. ///
[XmlAttribute] public ushort id { get => idField;设置 => idField = 值; } ` /// [XmlAttribute] public byte id { get => idField;设置 => idField = 值; }` -
好的,我明白了。如果我将所有字节更改为 ushort,一切正常。感谢您提供线索!stuartd!