问题标签 [ixmlserializable]

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 回答
5109 浏览

c# - 在 XmlWriter 中省略 XmlDeclaration 并实现 IXmlSerializable

我想通过实现 IXmlSerializable 来创建自定义 xml 序列化。我有这个实现 IXmlSerializable 接口的测试类:

我想要做的是省略 xml 声明。为此,我创建了适当的 XmlWriterSettings 实例并将其作为第二个参数传递以创建新的 XmlWriter。但是当我调试这段代码时,我看到 newWriter.Settings.OmitXmlDeclaration 设置为 false 并且序列化数据包含标记。我究竟做错了什么?

实际的序列化如下所示:

第二个问题是 - 如果我想序列化在要序列化的字段中具有自定义类型 ContactInfo 的 Employee 类型,我是否也需要在 ContactInfo 上实现 IXmlSerializable ?

0 投票
2 回答
2123 浏览

c# - 嵌套对象的 IList 和自定义 XML 序列化

我正在尝试序列化 IList。所以我为此使用 IXmlSerializable 。课程如下

如何从 SerializeTarget.Serialize 调用嵌套对象的序列化?

0 投票
3 回答
700 浏览

c# - 实现 IXmlSerializable 的 WCF 字典

我有一些使用默认 DataContractSerialization 的 WCF 服务。一些服务方法返回 Dictionary 对象。其中一个客户正在从 WCF 服务(biztalk 相关)生成 XSD 文件,他请求将所有字典类型转换为实现 IXmlSerializable 的新字典类型。我想知道,这种转换是否会有任何意想不到的结果,可能会以某种方式影响 DataContract 序列化?

更新:服务器和客户端共享相同的域 dll,客户端不会从服务中生成它们。也许在这个问题中我错过了要点;我想知道一个对象是否要通过datacontract序列化进行序列化,在对象中实现IXmlSerializable会导致任何问题。

0 投票
1 回答
1287 浏览

c# - 序列化具有大字节数组的对象时的 SerializableAttribute 或 IXmlSerializable

在我最近遇到大对象堆碎片问题之后,我重新审视了我的一些可序列化类。我经常做一些 Xml 序列化和序列化/反序列化包含大字节数组的对象。

一般来说,我只使用 SerializableAttribute 并且不关心序列化细节,直到我真的需要一些特殊行为。然后我切换到 IXmlSerializable 接口,编写自己的序列化/反序列化代码。

当手动将字节数组序列化为 Xml 时,我更喜欢XmlWriter.WriteBase64(byte[] buffer, int index, int count)XmlReader.ReadElementContentAsBase64(byte[] buffer, int index, int count)方法。这让我可以分块写入数据——非常方便。

但是当我只使用SerializableAttribute? .NET 框架内的自动序列化机制是按块写入数据(就像我手动执行的那样),还是只是通过创建非常大的字符串来保存使用 base64 序列化的整个字节数组来杀死大型对象堆?序列化器是否高效,或者我应该编写自己的序列化代码以确保写入数据而没有不必要的开销?

0 投票
3 回答
1672 浏览

c# - 为什么这个反序列化会引发 StackOverflow 异常?

当我尝试反序列化我的 FooContainer (List) 时会抛出一个错误。请只看这段代码的最后一部分。

我究竟做错了什么?

0 投票
1 回答
264 浏览

c# - 使用 IXmlSerialization,如何序列化 T 属性?

我的问题很简单。

假设我们有一个 Foo 类。并具有 T 属性。

我想在其中实现 IXmlSerializable,我的问题是我不知道要模仿标准的 XmlSerialization。我真的不知道如何像标准的 XmlSerlalization 那样编写这个属性。

更新:我这样做了,但它不起作用

当我序列化这个类(A、B 和 C)时。我想要这样的东西:

使用头等舱:

使用第二类:

使用第三类:

像这样的东西是我想要的,我不想在所有这些中实现自定义 XmlSerializer,我的意思是标准序列化使用的默认值。

0 投票
2 回答
832 浏览

c# - IXmlSerializable 和 XmlSerializer 一起发出

我有大约 50 个多态继承关系类。我使用 XmlSerializer 对它们进行序列化。现在对于几个类,我想实现 IXmlSerializable。所以我从一个类开始。这个类不是基类而是直接派生自所有多态关系的基类。

实现后,生成的 XML 仅包含我用 WriteXML 方法编写的上述类的标签。没有其他类的信息。很奇怪的行为!!!!

所以请指导我解决这个问题,以便维护其他类信息。

0 投票
2 回答
591 浏览

c# - IXmlSerializable 更改 xml 标记名称

我有如下收藏类

序列化它我写了WriteXML如下

现在输出 xml 与 Testcoll 一样具有标签“ArrayOfInt”。但我想将此名称更改为不同的“MyCollection”。

请告诉我如何实现这一目标。

0 投票
1 回答
465 浏览

c# - IXmlSerializable 在类中使用时不会反序列化

SerializableEnum 实现 IXmlSerializable。

SerializableEnum 也有一个有效的 FromXml;它看起来如下:

当我做:

Stock 将填充数据,但 Cmp 不会填充 Stock 数据(看起来 ReadXml 永远不会被调用)......

我尝试向 XmlSerializer 添加其他类型(例如,new Type[] {typeof(SerializableEnum)}),但这无济于事。

我在这里想念什么?谢谢。

我认为它可能类似于我必须在 SerializableEnum 类的 FromXml 中添加的 RootElementAttribute。IXmlSerializable 忽略了枚举具有的 XmlRoot 属性,因此我添加了该代码以在反序列化时添加它。有没有不同的方法可以让这一切一起工作?

0 投票
2 回答
1432 浏览

c# - 正确的序列化但不正确的反序列化

考虑以下代码和类:

当我运行它时,一个 xml 将生成到 ser.xml 中,如下所示:

但它无法正确反序列化文件,除非我像这样重新排序 xml 中的元素:

请注意,serializer.UnknownAttribute并且serializer.UnknownElement不会在两次执行期间引发。
问题是什么?我该如何解决?

--------------- EDIT------------
我知道问题正在IXmlSerializable.ReadXml()实施中。但什么样的问题,我应该如何治愈它?