问题标签 [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.
c# - 从 .NET 将类型序列化为 XML
我有这个 C# 4.0 类型
我想使用 XmlSerializer 将类型序列化为
理想情况下,如果 Estimate 属性的值为 false,我想省略它。将 Estimate 更改为可为空的 bool 是可以接受的。
从这种类型到这种 XML 表示需要哪些属性/实现?
谢谢。
c# - 使用 IXmlSerializable 对派生类进行 C# 序列化
我会尽量让我的问题尽可能简单。下面是 2 个示例程序来演示它。如果您需要分析它,您可以将其复制并粘贴到 Visual Studio 中。
随意评论和纠正我的英语。希望你能理解我。
我的目标是: 我们有 2 个类 - BaseClass 和 DerivedClass。
我们要:
- 创建 DerivedClass 的实例
- 将其分配给 BaseClass 类型的变量
- 将该变量序列化为 XML 文件
- 将该文件反序列化为 BaseClass 类型的变量
- 该变量应包含 DerivedClass 类型的对象
第一个示例程序使用“内置”序列化 - 并且工作正常。
但我想对序列化过程有更多的控制(使用 IXmlSerializable 接口)并达到相同的效果。
第一个例子:
- 这将打印“ConsoleApplication1.DerivedClass - 没关系。
- 这将创建包含所有 3 个属性的文件 - 没关系。
- 这将打印“ConsoleApplication1.DerivedClass - 没关系。
第二个例子:
- 这将打印“ConsoleApplication1.DerivedClass - 没关系。
- 这将创建包含所有 3 个属性的文件 - 没关系。
- 这将打印 "ConsoleApplication1.BaseClass- and IT IS NOT OK。生成的对象仅包含 2 个属性。
主要问题是: 如何更改简单类的定义?
感谢您的帮助。
c# - 如何在 XML 中序列化自定义 IEnumerable?
我创建了一个派生自IEnumerable<T>
. T 是 a OQTemplate
,并且这个实现了 IXmlSerializable 正确。但我不知道如何实现以下类。
我只想拥有这样的 XML:
android - 使用 SAX 解析器获取属性值并将这些值映射在一起
在这里,我想在一个数组列表或哈希映射中解析 Map 值,我不知道哪种方法更好。
这是我的 XML 文件
我正在使用SAX 解析器来解析这个东西
在这里,我想粘贴Map
标签,我不能轻松地做到这一点,也无法获得它的属性值,但我想知道如何管理这个Map
元素的属性值,例如MapName
,paris
我想在将来使用它各自的值,比如LoadAtStartup
属性值。
我如何管理这 3 个地图值?
谢谢
山姆
wcf - 在 WCF 中使用 XmlSerializer 序列化 IXmlSerializable 类型
对 DataContractSerializer 彻底失望,我尝试使用 IXmlSerializable 类型和 XmlSerializer 在 WCF 中启动和运行。
我已经在我的类中实现了 IXmlSerializable和XmlSchemaProvider 以进行序列化并为我的 OperationContract 声明 [XmlSerializerFormat]。
使用复杂模式时,我在尝试查看 WSDL 时收到以下错误:
该模式具有各种包含(此属性在其中一个中声明)。我什至在代码 ( schema.Includes
) 中添加了包含的模式,但无济于事。
即使在最简单的示例项目中(具有 1 个元素和 2 个属性的简单模式,简单的对应类,你可以命名它)我终于克服了这个错误,但碰到了:
可悲的是,我不知道什么是有效的类型名称。这当然不是我的 XSD AFAICS 中的元素名称。
有任何想法吗?
编辑:
示例源代码可以在这里在线查看。
c# - 实现 IXmlSerializable 需要 Collection 属性具有 Setter
我有一个从 BindingList 继承的自定义类型的集合属性。目前,该属性通过 XmlSerializer 进行序列化,即使它没有 Setter。我现在正在尝试在此自定义集合类上实现 IXmlSerializable,并看到 WriteXml() 和 ReadXml() 接口方法只有在我的集合属性具有 Setter 时才会被调用。为什么序列化现在会忽略此属性,除非在没有 Setter 的情况下正确序列化之前存在 Setter。
重现:
首先,有一个名为“Item”的类:
接下来创建集合类“MyCollectionType”(请注意,IXmlSerializable 在开始的片段中故意缺少):
最后,在 Main() 中添加一些代码来序列化和反序列化“项目”:
因此,如果您按原样运行,您应该会看到它在没有 Setter 的情况下进行序列化和反序列化。目前,该集合没有在上面的代码段中列出“IXmlSerializable”,但方法在那里。因此,如果您现在返回并将“IXmlSerializable”添加到 MyCollectionType 类并再次运行,您会注意到集合属性未序列化,并且未调用 WriteXml() 和 ReadXml() 方法。另请注意,如果您添加一个空的 Setter,这些方法将突然被调用。
c# - XML 子元素反序列化抛出 InvalidOperationException
我正在尝试手动反序列化数据对象的层次结构(下面的完整代码),但得到一个我不明白的异常。
DEMDataSet
包含DemographicReportGroup
对象的集合。DemographicReportGroup
实现IXmlSerializable
,包含Agency
对象。Agency
对象包含叶数据项dAgency.01
,又名EMSAgencyUniqueStateID
。
我正在努力实现 for 的ReadXml
方法DemographicReportGroup
,但我得到一个异常抛出如下:
System.InvalidOperationException: <dAgency.01 xmlns=' http://www.nemsis.org '> 不是预期的。
到目前为止,我发现的所有代码示例都表明这应该可以工作......也许这是 XML 属性的错误配置?
希望有人可以提供帮助!
另外,如果你好奇:
- 你为什么要实施
IXmlSerializable
?- 该
timeStamp
属性是日期/时间。如果它是一个 plainDateTime
,它在被序列化时总是有一个值 (1/1/0001)。该DateTime?
类型让我知道它何时没有值,但它不能序列化为属性。该示例所属的数据标准规定时间戳必须是一个属性。
- 该
- 实现一个 ShouldSerializetimeStampValue 怎么样?
- 这将产生一个额外的属性和额外的方法(timeStampValue 和 ShouldSerializetimeStampValue),这对于一个数据项来说是太多的代码。此外,这不是我要处理的唯一时间戳。
完整代码(作为 Visual Studio 的单元测试):
c# - 将 XML 元素序列化为其类名
简而言之,我希望从一组对象创建 XML 模式,如下所示;
但我得到的是;
QBXMLMsgsRq 实际上是一个集合,abstract class
因为在不同类型的集合中可能有许多请求(此处为 InvoiceQueryRq,但也可能有 InvoiceAddRq、InvoiceDeleteRq 等)。默认情况下,XML 序列化程序不允许这样做,但经过一番研究后,我发现了这个链接;XML Serialize 可序列化对象的通用列表
我调整了AbstractXmlSerializer
那里
为了方便和测试任何帮助的人,我正在处理的对象是;
xml - 包含 IXmlSerializable 属性的可序列化类无法反序列化?
是否允许从 [Serializable] 属性类过渡到 IXmlSerializable 类并返回?以下代码按预期进行序列化,但它不会反序列化 A 的第二个属性(它始终返回 null)。
谢谢!
产生预期的 XML:
c# - XMLSerialization 不设置反序列化的属性
我有一个奇怪的行为,我什至不知道如何诊断。
反序列化期间的某些属性未设置(null),即使我在(刚刚生成的)XML 文档中清楚地看到它们。对于类似类型的对象,XML 文档看起来结构良好且对称。
看起来它将值设置到某个点,然后停止设置值,然后忽略所有其他数据。
只是要指出 - 它正确设置的最后一个值是一个包含另一个对象的类型的对象,由于类似单例的反序列化问题,我不得不实现IXmlSerializable
. 我指出这一点是因为它可能暗示一些错误,尽管我无法弄清楚它可能是什么。
编辑:我阅读了一些关于检索序列化程序集和代码的文章。出于某种原因,它只输出 .dll 和 .pdb 文件,而不是 .cs,正如文章中提到的那样
谢谢