问题标签 [xmlserializer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
131 浏览

xml - Xml序列化和列表

我有以下课程

不幸的是,当它被序列化时,它看起来像

我怎样才能让那个根节点成为Notifications?我在该类上尝试了一些不同的属性,但没有一个可以编译。

0 投票
2 回答
6114 浏览

c# - XML 序列化 - 何时使用 DataContractSerializer / Binary / XMLSerializer

我已经看了一段时间了

似乎不鼓励二进制序列化,因为对字段名称的任何更改都会破坏序列化 =?不好

XMLSerializer 是有问题的,因为您必须提供无 arg 构造函数和公共字段,尽管您确实可以更好地控制作为属性或元素的元素及其命名

DataContractSerializer 很好,但所有子类都需要显式添加,这很可惜

但是我偶然发现了没有这个限制的 NetDataContractSerializer。

如果您的目标是 C# 序列化并且对 xml 的大小没有大的限制,那么 NetDataContractSerializer 总是要走的路吗?

0 投票
1 回答
3376 浏览

c# - XmlRootAttribute 是可继承的吗?

我有一个使用 C# 的XmlSerializer序列化的类。它标有XmlRoot属性,我想在派生类中继承此属性。

查看文档并没有说 XmlRoot 使用 AttributeUsageAttribute 将 Inherit 设置为 false(Inherit 应该默认为 true),但是在尝试反序列化没有 XmlRoot 属性的继承类时出现错误(“<rootNode xmlns='' > 没想到。”)。

这目前有效:

这不起作用,但这是我想要的:

我可能尝试反序列化的 XMLInheritedClass如下所示:

0 投票
3 回答
1764 浏览

.net - 序列化没有根元素的集合时出现 XmlSerializer 错误?

这是一个有点长的问题,但我已经尽可能简洁了,所以请多多包涵。在我看来,这就像XmlSerializer课堂上的一个错误,但在我将它提交给 Microsoft 之前,我想看看是否有任何我遗漏的东西,这是完全可能的。

我正在尝试生成以下 XML 作为代表性案例,它本质上是集合的集合,但外部集合具有其他元素:

序列化类如下:

运行它的简单测试程序如下:

这采用了usingXmlElement删除集合的父节点的技巧,这意味着不会<Groups>发出任何元素,并且对于外部数组中包含的每个对象(将是 type Link[]),<Group>都应该发出一个元素。但是,在运行时,这会产生以下异常XmlSerializer

无法生成临时类(结果=1)。错误 CS0030:无法将类型“Link[][]”转换为“Link[]”错误 CS0029:无法将类型“Link[]”隐式转换为“Link[][]”

我的猜测是,序列化程序出于某种原因试图展平集合,并认为外部数组中包含的类型是Link而不是Link[]导致其序列化类的编译失败,因为类型不匹配。

你怎么看?这是一个错误吗?并且有没有一种解决方法来生成我使用后的 XML XmlSerializer

0 投票
1 回答
13324 浏览

c# - XmlSerializer.Deserialize 在 List<> 项目上

我已经尝试了在 SO 和其他地方可以找到的所有解决方案,但似乎无法弄清楚为什么这不起作用。

将 XML 字符串直接反序列化为对象,该对象具有一个属性 - 一个 List:

这是反序列化代码:

这是 XML:

此代码编译并运行,并返回一个 UpdateData 类型的对象,但 Updates 属性为空。有任何想法吗?

0 投票
1 回答
351 浏览

enums - .Net 序列化、XmlDataReader、SQL 数据库和 FlagsAttribute!

快速概述我的情况:

我正在开发一个非常依赖序列化的 N 层应用程序,对象主要以序列化方式与数据库交互,对象和集合作为 XML 从存储过程中插入、更新和读取。

对于一些较小的数据类,我只是使用 ExecuteNonQuery、Reader 等与数据交互,因为它更容易,但我遇到了一个问题。

使用 ExecuteNonQuery 将数据插入到数据库中,使用参数 - 插入的一些数据是附加了 FlagAttribute 的枚举属性(作为整数存储在数据库中)。在枚举上,例如:

读回的值可能是整数值 1、3、7 等,并且不使用序列化插入到数据库中,但是当使用 ExecuteXmlReader(填充 XmlReader 对象)作为更大类组的一部分读回时然后需要反序列化,它不能,例如 7,导致'Instance validation error:'7' is not a valid value for Fruit',因为它期望它以以下格式序列化:

总而言之,这有点令人困惑,我可以通过将其以 1、2、4 格式存储在数据库中来解决它,但遗憾的是,它不是当前所在的 int 类型。

有人对此有任何想法吗?

0 投票
3 回答
1907 浏览

c# - xmlserializer 没有正确反序列化导入模式

我一直在尝试使用从 xsd.exe 中的模式生成的类来反序列化 C# 中的 xml 文件。不幸的是,只有部分文件被正确反序列化,其余部分由于我无法解决的原因返回为 null。

我的过程如下: 从生成 C# 代码的 myschema.xsd 文件开始:

并且导入的 parentschema.xsd 文件是这样的:

我将上述两个架构文件传递给 xsd.exe:

生成一个 myschema_parentschema.cs 文件

为了测试它,我试图反序列化一个示例 xml 文件:

我将其传递给以下 XmlSerializer 代码,其中 reader 是上述 xml 文件的 XmlReader:

为什么反序列化的对象有一个空的 body 属性,我如何让它正确反序列化 Foo 元素?

0 投票
3 回答
202 浏览

.net - 表示没有 xsd 的 XML

注意:我不能使用 XSD... 不打算说明原因。

我在一个应该反序列化的类中正确表示以下 xml 时遇到问题:

XML:

问题是表示属性节点

到目前为止,我所拥有的是:

我知道我缺少一些东西来存储价值,也许

0 投票
4 回答
3520 浏览

.net - 有没有办法避免 XmlSerializer 在反序列化时不初始化 null 属性?

我有这堂课:

如果 MyList 在 MySerializableClass 被序列化时为空,那么当它被反序列化时我也需要它为空,但 XmlSerializer 在反序列化我的类时总是初始化它。

有没有办法避免它初始化空属性?

MyList 为空时甚至不会记录在序列化文件中。当我用空值加载它并再次保存时, MyList 不再为空,它被序列化为具有 0 个项目但不为空的 List<>。

谢谢。

更多信息:

由于类结构中的一些代码限制,IsDeserializing 属性不可行

0 投票
1 回答
428 浏览

serialization - XML 序列化 - 是否可以以这种方式序列化模型?

我有以下模型:

所以基本上我希望能够做到以下几点:

序列化后,它应该类似于:

我玩过 DataContracts 和 XmlSerializer,但我似乎无法找到一种方法来做到这一点。