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

c# - 从 .NET 将类型序列化为 XML

我有这个 C# 4.0 类型

我想使用 XmlSerializer 将类型序列化为

理想情况下,如果 Estimate 属性的值为 false,我想省略它。将 Estimate 更改为可为空的 bool 是可以接受的。

从这种类型到这种 XML 表示需要哪些属性/实现?

谢谢。

0 投票
0 回答
1509 浏览

c# - 使用 IXmlSerializable 对派生类进行 C# 序列化

我会尽量让我的问题尽可能简单。下面是 2 个示例程序来演示它。如果您需要分析它,您可以将其复制并粘贴到 Visual Studio 中。

随意评论和纠正我的英语。希望你能理解我。

我的目标是: 我们有 2 个类 - BaseClass 和 DerivedClass。

我们要:

  1. 创建 DerivedClass 的实例
  2. 将其分配给 BaseClass 类型的变量
  3. 将该变量序列化为 XML 文件
  4. 将该文件反序列化为 BaseClass 类型的变量
  5. 该变量应包含 DerivedClass 类型的对象

第一个示例程序使用“内置”序列化 - 并且工作正常。

但我想对序列化过程有更多的控制(使用 IXmlSerializable 接口)达到相同的效果。

第一个例子:

  1. 这将打印“ConsoleApplication1.DerivedClass - 没关系。
  2. 这将创建包含所有 3 个属性的文件 - 没关系。
  3. 这将打印“ConsoleApplication1.DerivedClass - 没关系。

第二个例子:

  1. 这将打印“ConsoleApplication1.DerivedClass - 没关系。
  2. 这将创建包含所有 3 个属性的文件 - 没关系。
  3. 这将打印 "ConsoleApplication1.BaseClass- and IT IS NOT OK。生成的对象仅包含 2 个属性。

主要问题是: 如何更改简单类的定义?

感谢您的帮助。

0 投票
0 回答
283 浏览

c# - 如何在 XML 中序列化自定义 IEnumerable?

我创建了一个派生自IEnumerable<T>. T 是 a OQTemplate,并且这个实现了 IXmlSerializable 正确。但我不知道如何实现以下类。

我只想拥有这样的 XML:

0 投票
2 回答
538 浏览

android - 使用 SAX 解析器获取属性值并将这些值映射在一起

在这里,我想在一个数组列表或哈希映射中解析 Map 值,我不知道哪种方法更好。

这是我的 XML 文件

我正在使用SAX 解析器来解析这个东西

在这里,我想粘贴Map标签,我不能轻松地做到这一点,也无法获得它的属性值,但我想知道如何管理这个Map元素的属性值,例如MapNameparis我想在将来使用它各自的值,比如LoadAtStartup属性值。

我如何管理这 3 个地图值?

谢谢

山姆

0 投票
1 回答
711 浏览

wcf - 在 WCF 中使用 XmlSerializer 序列化 IXmlSerializable 类型

对 DataContractSerializer 彻底失望,我尝试使用 IXmlSerializable 类型和 XmlSerializer 在 WCF 中启动和运行。

我已经在我的类中实现了 IXmlSerializableXmlSchemaProvider 以进行序列化并为我的 OperationContract 声明 [XmlSerializerFormat]。

使用复杂模式时,我在尝试查看 WSDL 时收到以下错误:

该模式具有各种包含(此属性在其中一个中声明)。我什至在代码 ( schema.Includes) 中添加了包含的模式,但无济于事。

即使在最简单的示例项目中(具有 1 个元素和 2 个属性的简单模式,简单的对应类,你可以命名它)我终于克服了这个错误,但碰到了:

可悲的是,我不知道什么有效的类型名称。这当然不是我的 XSD AFAICS 中的元素名称。

有任何想法吗?

编辑:

示例源代码可以在这里在线查看。

0 投票
1 回答
695 浏览

c# - 实现 IXmlSerializable 需要 Collection 属性具有 Setter

我有一个从 BindingList 继承的自定义类型的集合属性。目前,该属性通过 XmlSerializer 进行序列化,即使它没有 Setter。我现在正在尝试在此自定义集合类上实现 IXmlSerializable,并看到 WriteXml() 和 ReadXml() 接口方法只有在我的集合属性具有 Setter 时才会被调用。为什么序列化现在会忽略此属性,除非在没有 Setter 的情况下正确序列化之前存在 Setter。

重现:

首先,有一个名为“Item”的类:

接下来创建集合类“MyCollectionType”(请注意,IXmlSerializable 在开始的片段中故意缺少):

最后,在 Main() 中添加一些代码来序列化和反序列化“项目”:

因此,如果您按原样运行,您应该会看到它在没有 Setter 的情况下进行序列化和反序列化。目前,该集合没有在上面的代码段中列出“IXmlSerializable”,但方法在那里。因此,如果您现在返回并将“IXmlSerializable”添加到 MyCollectionType 类并再次运行,您会注意到集合属性未序列化,并且未调用 WriteXml() 和 ReadXml() 方法。另请注意,如果您添加一个空的 Setter,这些方法将突然被调用。

0 投票
1 回答
551 浏览

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属性是日期/时间。如果它是一个 plain DateTime,它在被序列化时总是有一个值 (1/1/0001)。该DateTime?类型让我知道它何时没有值,但它不能序列化为属性。该示例所属的数据标准规定时间戳必须是一个属性。
  • 实现一个 ShouldSerializetimeStampValue 怎么样?
    • 这将产生一个额外的属性和额外的方法(timeStampValue 和 ShouldSerializetimeStampValue),这对于一个数据项来说是太多的代码。此外,这不是我要处理的唯一时间戳。

完整代码(作为 Visual Studio 的单元测试):

0 投票
1 回答
3591 浏览

c# - 将 XML 元素序列化为其类名

简而言之,我希望从一组对象创建 XML 模式,如下所示;

但我得到的是;

QBXMLMsgsRq 实际上是一个集合,abstract class因为在不同类型的集合中可能有许多请求(此处为 InvoiceQueryRq,但也可能有 InvoiceAddRq、InvoiceDeleteRq 等)。默认情况下,XML 序列化程序不允许这样做,但经过一番研究后,我发现了这个链接;XML Serialize 可序列化对象的通用列表

我调整了AbstractXmlSerializer那里

为了方便和测试任何帮助的人,我正在处理的对象是;

0 投票
1 回答
539 浏览

xml - 包含 IXmlSerializable 属性的可序列化类无法反序列化?

是否允许从 [Serializable] 属性类过渡到 IXmlSerializable 类并返回?以下代码按预期进行序列化,但它不会反序列化 A 的第二个属性(它始终返回 null)。

谢谢!

产生预期的 XML:

0 投票
1 回答
586 浏览

c# - XMLSerialization 不设置反序列化的属性

我有一个奇怪的行为,我什至不知道如何诊断。

反序列化期间的某些属性未设置(null),即使我在(刚刚生成的)XML 文档中清楚地看到它们。对于类似类型的对象,XML 文档看起来结构良好且对称。

看起来它将值设置到某个点,然后停止设置值,然后忽略所有其他数据。

只是要指出 - 它正确设置的最后一个值是一个包含另一个对象的类型的对象,由于类似单例的反序列化问题,我不得不实现IXmlSerializable. 我指出这一点是因为它可能暗示一些错误,尽管我无法弄清楚它可能是什么。

编辑:我阅读了一些关于检索序列化程序集和代码的文章。出于某种原因,它只输出 .dll 和 .pdb 文件,而不是 .cs,正如文章中提到的那样

谢谢