问题标签 [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.
c# - XmlSerializer 序列化泛型接口列表
我正在尝试使用 XmlSerializer 来持久化一个 List(T),其中 T 是一个接口。序列化程序不喜欢接口。我很好奇是否有一种简单的方法可以使用 XmlSerializer 轻松序列化异构对象列表。这就是我想要的:
c# - XmlSerializer 需要 XmlInclude 用于具有通用约束的公共方法,如果类型在另一个程序集中并且要求该类型是可序列化的!
考虑以下。您有一个要使用 XmlSerializer 序列化的类,该类具有公共泛型方法,该方法具有类型约束,其中类型位于不同的程序集中:
您不会期望 XmlSerializer 甚至会关注方法,而且通常不会。以下两者都可以正常工作:
此外,如果类型 Bar 与 Foo 在同一个程序集中,那么序列化程序也会非常高兴。
当您执行第一个示例时,如果 Bar 是在单独的程序集中定义的,您将收到一个运行时异常,指出您需要添加对包含 Bar 的程序集的引用,即使您的项目引用中已经有了该程序集。您可以使用 XmlInclude 解决此问题:
但是,如果 Bar 不可序列化,并且没有理由这样做,那么您现在将在第一次遇到无法序列化的内容时获得运行时异常,例如返回接口作为其类型的公共属性,没有无参数构造函数的类等!
相关但不详细:XmlSerializer is throwing InvalidOperationException when using the generic type constraint where
另外:微软对这个问题的看法
c# - XmlSerializer.Deserialize 问题与根元素丢失或元素不期望
我在反序列化 xml 文档时遇到了一些问题。我试图反序列化的文档是这样的:
我的课看起来像这样:
当我使用此代码时,我收到此错误:{“http://kiosk.surlatable.com/'> 不是预期的。”}
如果我将 XmlRoot 元素更改为也包含命名空间,那么我对根元素的错误更改将丢失。
我认为其中一个会给我预期的结果,但事实并非如此。有人可以发现我在这里缺少什么吗?
c# - 如何通过 C# 中的 XML 序列化输出十六进制数字?
我有一些类和结构,我使用 XML 序列化来保存和调用数据,但我想要的一个功能是以十六进制表示形式输出整数。有什么属性可以挂在这些结构上来实现吗?
vb.net - 如何将缺少的布尔字段反序列化为 TRUE
我正在使用 XmlSerializer 将自定义对象从文件反序列化为我的应用程序中的对象。 我的问题是,对于我要反序列化的文件中不存在的新属性,我希望对象中的一个字段默认为“True”而不是“False”。
默认情况下,.Net 将此值分配为 false,因为它在文件中不存在,如果不存在,我希望它默认为 True。我在对象定义中的字段上使用了System.ComponentModel.DefaultValue(True)属性,但这不起作用。有谁知道如何做到这一点?
c# - 更改 XmlSerializer 序列化空元素的方式
我正在使用 XmlSerializer。它可以很好地序列化对象,但客户端需要采用这种格式的空元素<star:Confirm/>
。相反,序列化程序将空元素序列化为<star:Confirm></star:Confirm>
是否有办法将其更改为序列化客户端所需的方式。
c# - 属性只能由序列化程序设置
我有一个与 API 通信的类,需要对其接触的任何数据进行一些转换。这个类也是等价的:
对于我的 API 调用者,我通过序列化这些类来记录每个请求和响应。它们几乎充当 xml 模式。
现在一切正常,我唯一的问题是理论上有人可以尝试设置并最终无法获得预期的结果。它主要是一个设计问题,只是试图让我的代码负责。我希望能够在此使用私有集,但 XmlSerializer 抱怨它。
除了序列化程序之外,是否有属性或其他技术能够使转换后的值不可设置?
此外,如果没有选项,则可以选择将属性设置为过时。还有其他更合适的属性可以使用吗?
wpf - 由于 WPF 应用程序启动缓慢而替换 XmlSerializer
我编写了一个 WPF 应用程序,它从网络位置的 XML 文件中读取电影列表。当我开始调查缓慢的启动时,发现 XmlSerializer 有很多开销。
在发布项目之前,我现在已经使用 sgen 构建程序集,但我现在正在寻找更好的解决方案。我查看了 BinaryFormatter 类,但 XML 文件是由在 Linux 服务器上运行的 PHP 脚本创建的。
我会更好地使用 XML 文件阅读器并自己循环浏览文件,还是有更好的选择?我的目标是速度,所以欢迎任何替换我的 XmlSerializer 的建议。
这是反序列化文件的代码。
我不知道如何附加文件,所以我将 XML 文件粘贴到了 pastebin。http://pastebin.com/Rxsy0R3c 谢谢本
c# - XMLSerializer 无法反序列化 xml 文档
我是 C# 的新手。我有一个返回 xml 响应的 java REST 服务,我正在尝试使用 C# XmlSerializer 反序列化 xml 文档。下面粘贴了一个示例 xml 文档响应。
当我将此 xml 文档反序列化为 Document 对象时,它工作正常。我的文档类粘贴在下面
在我的主程序中,当我尝试时,我得到了一个 xmlNodes 数组
在服务器端 java REST 服务实现中,字段实际上是一个数组列表,它将包含一个接口的三个实现的实例。(列表可能包含自定义业务对象的 ScalarFieldImpl 或 ArrayFieldImpl)。
我想使用 XmlSerializer 将此 xml 字段反序列化为 ScalarFieldImpl 或 ArrayFieldImpl。我想知道这是否可能?如果是这样,我该怎么做?
.net - 对具有不同多态根的 xml 使用 .NET XmlSerializer
我有来自一个来源的不同根的 XML 文档。我有一个 XSD 模式,就像在这个问题中描述的那样,具有 Base 类型的 abstract='true' 根元素 'BaseElem',以及扩展 Base 类型并使用 substitutionGroup=' 的附加根元素 Elem1、Elem2、... BaseElement' 属性。
xsd.exe 生成 BaseElem 和派生的 Elem1、Elem2、... 类 ok,只有派生类具有 [XmlRootAttribute]。
我想使用内置的 XmlSerializer 来序列化和反序列化生成的对象。
序列化:
产生元素。要使用特定的根进行序列化,我必须创建序列化程序“new XmlSerializer(typeof(Elem1))”。
如果使用 BaseElem,反序列化根本不起作用,只能像这样工作:
我怎样才能有一个更多态的、单一的序列化方法?
谢谢!