问题标签 [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.
xml - Xml序列化和列表
我有以下课程
不幸的是,当它被序列化时,它看起来像
我怎样才能让那个根节点成为Notifications?我在该类上尝试了一些不同的属性,但没有一个可以编译。
c# - XML 序列化 - 何时使用 DataContractSerializer / Binary / XMLSerializer
我已经看了一段时间了
似乎不鼓励二进制序列化,因为对字段名称的任何更改都会破坏序列化 =?不好
XMLSerializer 是有问题的,因为您必须提供无 arg 构造函数和公共字段,尽管您确实可以更好地控制作为属性或元素的元素及其命名
DataContractSerializer 很好,但所有子类都需要显式添加,这很可惜
但是我偶然发现了没有这个限制的 NetDataContractSerializer。
如果您的目标是 C# 序列化并且对 xml 的大小没有大的限制,那么 NetDataContractSerializer 总是要走的路吗?
c# - XmlRootAttribute 是可继承的吗?
我有一个使用 C# 的XmlSerializer序列化的类。它标有XmlRoot属性,我想在派生类中继承此属性。
查看文档并没有说 XmlRoot 使用 AttributeUsageAttribute 将 Inherit 设置为 false(Inherit 应该默认为 true),但是在尝试反序列化没有 XmlRoot 属性的继承类时出现错误(“<rootNode xmlns='' > 没想到。”)。
这目前有效:
这不起作用,但这是我想要的:
我可能尝试反序列化的 XMLInheritedClass
如下所示:
.net - 序列化没有根元素的集合时出现 XmlSerializer 错误?
这是一个有点长的问题,但我已经尽可能简洁了,所以请多多包涵。在我看来,这就像XmlSerializer
课堂上的一个错误,但在我将它提交给 Microsoft 之前,我想看看是否有任何我遗漏的东西,这是完全可能的。
我正在尝试生成以下 XML 作为代表性案例,它本质上是集合的集合,但外部集合具有其他元素:
序列化类如下:
运行它的简单测试程序如下:
这采用了usingXmlElement
删除集合的父节点的技巧,这意味着不会<Groups>
发出任何元素,并且对于外部数组中包含的每个对象(将是 type Link[]
),<Group>
都应该发出一个元素。但是,在运行时,这会产生以下异常XmlSerializer
:
无法生成临时类(结果=1)。错误 CS0030:无法将类型“Link[][]”转换为“Link[]”错误 CS0029:无法将类型“Link[]”隐式转换为“Link[][]”
我的猜测是,序列化程序出于某种原因试图展平集合,并认为外部数组中包含的类型是Link
而不是Link[]
导致其序列化类的编译失败,因为类型不匹配。
你怎么看?这是一个错误吗?并且有没有一种解决方法来生成我使用后的 XML XmlSerializer
?
c# - XmlSerializer.Deserialize 在 List<> 项目上
我已经尝试了在 SO 和其他地方可以找到的所有解决方案,但似乎无法弄清楚为什么这不起作用。
将 XML 字符串直接反序列化为对象,该对象具有一个属性 - 一个 List:
这是反序列化代码:
这是 XML:
此代码编译并运行,并返回一个 UpdateData 类型的对象,但 Updates 属性为空。有任何想法吗?
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 类型。
有人对此有任何想法吗?
c# - xmlserializer 没有正确反序列化导入模式
我一直在尝试使用从 xsd.exe 中的模式生成的类来反序列化 C# 中的 xml 文件。不幸的是,只有部分文件被正确反序列化,其余部分由于我无法解决的原因返回为 null。
我的过程如下: 从生成 C# 代码的 myschema.xsd 文件开始:
并且导入的 parentschema.xsd 文件是这样的:
我将上述两个架构文件传递给 xsd.exe:
生成一个 myschema_parentschema.cs 文件
为了测试它,我试图反序列化一个示例 xml 文件:
我将其传递给以下 XmlSerializer 代码,其中 reader 是上述 xml 文件的 XmlReader:
为什么反序列化的对象有一个空的 body 属性,我如何让它正确反序列化 Foo 元素?
.net - 表示没有 xsd 的 XML
注意:我不能使用 XSD... 不打算说明原因。
我在一个应该反序列化的类中正确表示以下 xml 时遇到问题:
XML:
问题是表示属性节点
到目前为止,我所拥有的是:
我知道我缺少一些东西来存储价值,也许
.net - 有没有办法避免 XmlSerializer 在反序列化时不初始化 null 属性?
我有这堂课:
如果 MyList 在 MySerializableClass 被序列化时为空,那么当它被反序列化时我也需要它为空,但 XmlSerializer 在反序列化我的类时总是初始化它。
有没有办法避免它初始化空属性?
MyList 为空时甚至不会记录在序列化文件中。当我用空值加载它并再次保存时, MyList 不再为空,它被序列化为具有 0 个项目但不为空的 List<>。
谢谢。
更多信息:
由于类结构中的一些代码限制,IsDeserializing 属性不可行
serialization - XML 序列化 - 是否可以以这种方式序列化模型?
我有以下模型:
所以基本上我希望能够做到以下几点:
序列化后,它应该类似于:
我玩过 DataContracts 和 XmlSerializer,但我似乎无法找到一种方法来做到这一点。