问题标签 [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 投票
2 回答
2309 浏览

.net - “此 XmlReader 不支持 ReadElementContentAsBase64 方法”

ReadElementContentAsBase64行抛出NotSupportedException消息:

此 XmlReader 不支持 ReadElementContentAsBase64 方法。使用 CanReadBinaryContent 属性来确定阅读器是否实现了它。

(我检查了,CanReadBinaryContent 返回 true)

我正在使用 Microsoft .NET 3.5 框架实现。

什么可能导致这种情况?

注意:我有意将 DataContractSerializer 与 IXmlSerializable 混合使用。我意识到 DataContractSerializer 更常见的方法是让我的类成为 [DataContract]。

编辑:我现在正在使用一种解决方法:
Convert.FromBase64String(reader.ReadElementContentAsString())
不过,我想知道为什么常规方式会失败。

0 投票
1 回答
158 浏览

c# - 我应该为公共 API 使用哪种 XML 序列化方法?

我正在编写一个程序,该程序构建一个由从抽象类继承的类组成的树结构Node。我的程序中内置了许多不同类型的节点。但是,我也希望让更高级的用户能够引用我的库并编写他们自己的Node. 然后,当我的应用程序通过Assembly.Load(). 因此,我的应用程序使用的所有潜在Node类型在运行时才会知道。

此外,我希望能够将这些树与 XML 文件进行序列化和反序列化。我对 XMLSerializer、DataContractSerializer 和实现 IXmlSerializable 有一些经验。通常,我使用 DataContractSerializer,因为它通常需要比实现 IXmlSerializable 更少的代码,并且可以序列化 XmlSerializer 不能序列化的私有字段。

然而,在这个项目中,我还必须考虑其他用户将创建从我的类派生的类,并且还必须添加序列化它们所需的任何代码或属性。

考虑到这一点,我是否应该使用一种序列化机制而不是另一种?

0 投票
1 回答
736 浏览

vb.net - 从 xml 序列化中识别对象类型的动态 XmlSerializer?

有什么方法可以创建一个 XmlSerializer,它将数据类型与序列化数据一起存储,然后在反序列化时,它会自动识别序列化对象的类型并创建该类型的对象(作为对象返回)。

任何包含 XDocument、XML 文字的想法也会受到欢迎。

0 投票
1 回答
412 浏览

.net - 在 WCF XmlSchema 中指定继承

我面临一种情况,我必须在数据类型上实现 IXmlSerializable,我将通过 WCF 服务发送它。但是当我尝试在xsd中标记基类时,服务引用无法再刷新,而我写的xsd的类型为“找不到”。这是xsd:

这是C#:

我假设我需要以某种方式导入 BaseType ?

编辑:我试过

它添加了一个模式(如预期的那样),但没有任何变化!

0 投票
1 回答
542 浏览

asp.net - 帮助在此 XML 上实现 IXmlSerializable

这是 XML:

我有 DTO:

0 投票
4 回答
2485 浏览

c# - xml序列化动态忽略

我正在尝试以特定格式生成 xml 文档。我想跳过根据属性值对属性进行序列化。

如果 Set 为 false,我希望不序列化整个属性,我生成的 xml 应该是

代替

有什么方法可以让我用 IXmlSerializable 或其他任何东西干净地做到这一点?

谢谢!

0 投票
0 回答
357 浏览

c# - XMLDeserialize,“反映类型时出现错误”

可能重复:
XmlSerializer - 反映类型时出现错误

反映类型“MyNameSpace.configType”时出现错误。

我会减少configType一些,希望能找到问题。除了删除表面上的冗余属性之外,我在从 xsd.exe 生成它后对其所做的唯一更改是用我自己的替换生成的类之一,这样我就可以更好地实现可选元素的序列化。

感谢您提供检查该 innerException 的提示,它可以追溯到我实现 IXmlSerializable 的类,该类现在位于其自己的文件中,如下所示:

jdehaan 写了一篇不错的文章,Proper way to implement IXmlSerializable? . 在阅读了他的代码项目后,我发现 xsd.exe 为我的原型类生成的东西破坏了我扩展实现的类IXMLSerializable

具体来说,属性 [XmlType(Namespace = "MyNameSpace")] 会导致错误“反映属性”。当我删除它时,我会更进一步,包含类传递了所有其他内容的反序列化,但是当涉及到代表我上面的类的成员时,它会发出“无效的 XML 标记”。

0 投票
1 回答
679 浏览

c# - 序列化对象并将其存储在另一个实现 IXmlSerializable 的对象中

我想对我的对象Exception的实例进行 XML 序列化,并将其存储在另一个对象ExceptionReport的XMLNode[] Nodes属性中。

我将如何去做,所以结果会是这样的:

到目前为止,我有以下内容,但我需要知道如何序列化这些对象并将它们存储在 ExceptionReport Nodes 数组中。

0 投票
3 回答
3488 浏览

c# - 具有 IXmlSerializable 的命名空间前缀

对要使用的正确装饰器或可能需要的任何设计有点困惑。序列化实现 IXmlSerializable 的类时,有没有办法在 XmlRoot 元素中包含命名空间及其前缀?

例如类定义。

通过以下方式序列化时:

输出是

我期待的输出是:

第二个是 XmlSerializer 的输出,如果删除了类的 IXmlSerializable 实现并且取消注释 XmlElement 装饰器。我知道返回的两个 Xml 文档都是有效的,但最好尝试删除多余的命名空间声明。我认为这样的事情是可能的,因为 IXmlSerializable 旨在更好地控制您的类如何序列化/反序列化。

更新:一个非常有趣的答案建议修改 XmlWriterSettings!看起来这会通过修改 NamespaceHandling 属性来清除所有内容。但是,这仍然会导致为每个成员重写命名空间。完整的序列化代码如下:

0 投票
1 回答
449 浏览

c# - XmlSerializer 保存空文件

我在序列化我的对象时遇到问题。我实现了 IXmlSerializable 接口并初始化了 XmlSerializer 的对象(例如,序列化器)。但有时在调用 serializer.Serialize(writer, data) 之后,我的输出文件如下所示:在此处输入图像描述

为什么我会有这样的行为?