问题标签 [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.

0 投票
1 回答
1071 浏览

c# - 问题 xml 反序列化递归嵌套对象

已解决:下面的代码并没有像我想的那样导致无限循环。循环在调用反序列化的代码中。这个发布的代码工作得很好

我正在尝试将以下对象序列化和反序列化为 xml

MessageObject 类看起来像这样

因此,如果我有一个 messageobjectcollection 实例,如下所示:

我可以通过调用 var xml = msgColl.Serialize(); 来很好地序列化它。

但是,当我尝试通过调用 var msgColl = new MessageObjectCollection().Deserialize(xml); 来反序列化它时

我在反序列化方法中遇到堆栈溢出异常:

有人知道我在做什么错吗?

0 投票
2 回答
16111 浏览

serialization - 在 C# 中控制序列化顺序

我正在使用 XmlSerializer 序列化对象并将其写入文件。我在序列化程序方面取得了相当大的成功,它在嵌套元素以及序列化为元素与属性方面做了我希望它做的事情。不幸的是,我遇到了一个问题,我需要一个类的成员在另一个之前序列化。在其他地方,首先声明的内容首先被序列化,这对我有用,但在这种情况下,我并没有那么成功。有没有办法手动控制事物的序列化顺序?

0 投票
1 回答
819 浏览

c++-cli - .NET,XmlSerializer InvalidOperationException,由于 XmlSchema 定义?

我已经上传了一个 ZIP 文件,其中包含我正在尝试读取的 XML 文件和相应的 XSD 文件到http://www.bonnland.de/FIBEX.zip

我正在尝试使用 XmlSerializer 反序列化以下 XML(片段)。这样做时我得到了错误:(对不起,它是德语,我会用斜体给出粗略的翻译)

这可以翻译为:

这是源文件:

根元素是:

这个片段的类定义是:

我希望(再次)有人可以帮助我,因为我没有在谷歌或这里找到解决方案。

0 投票
3 回答
5646 浏览

c# - C# Xml 序列化列表具有 Xml 属性的后代

早安伙计们,

我有一个来自 List 并具有公共属性的集合。Xml 序列化程序不接受我的财产。列表项可以很好地序列化。我试过 XmlAttribute 属性无济于事。各位有解决办法吗?

我得到以下xml

我想得到这个

0 投票
2 回答
3947 浏览

c# - XmlSerializer.Deserialize - 忽略不必要的元素?

我有一个 XSD 架构,我已经生成了一个用于使用 xsd.exe 的类,并且我正在尝试XmlSerializer.Deserialize从一个应该符合 XSD 架构的 XML 文件中创建该类的一个实例。不幸的是,XML 文件有一些架构不期望的额外元素,这会导致System.InvalidOperationExceptionDeserialize.

我尝试将<xs:any>元素添加到我的架构中,但这似乎没有任何区别。

我的问题是:有什么办法可以XmlSerializer.Deserialize忽略这些额外的元素?

0 投票
3 回答
2047 浏览

c# - 很难在 .NET 中可用的 XML 序列化选项之间做出决定

直到昨晚,我一直在使用 .NET 中的各种库来解析 XML——XmlDocument而且XDocument主要是。我不知道为什么我不早点研究这个问题,但我突然想到 .NET 中一定有一些东西可以免费为您提供类序列化/反序列化,当然这以XmlSerializer类的形式出现.

果然,通过几行代码,我就可以轻松地进行序列化和反序列化(虽然在我现在写的代码中,我只需要反序列化),不再需要花费几个小时左右的时间编写我自己的类来与其他库一起执行此操作,以及必要的单元测试。但问题是我希望我的属性是只读的。如果我将 setter 设为私有,则在创建 XmlSerializer 时会出现此错误:

无法生成临时类(结果=1)。错误 CS0200:无法将属性或索引器“MyProperty”分配给——它是只读的

看起来这是一个无法解决的问题,所以必须有一个解决方法。

果然,我找到了这个信息,这表明如果你放弃自动属性并返回私有字段,你可以让代码编译。不幸的是,虽然它可以编译,但当您执行代码时,它实际上并没有反序列化数据。停止我的应用程序后,我注意到消息窗口中有几个条目是这样说的:

找不到元素“MyProperty”的架构信息。

这是因为没有代码为 MyProperty 赋值,因为 XmlSerializer 不知道如何处理私有字段!!!

我在 StackOverflow 上找到了一个答案,该答案提出了另一种解决方案,即使用DataContractSerializer我以前从未听说过的 a 。我对我的班级进行了必要的代码更改,但最终得到了与上面相同的消息。我运行了代码以确保在反序列化 XML 时不会设置类成员。

我在想,在我的特殊情况下,我要么接受它并允许成员被覆盖(坏),要么我回到我原来的做事方式,即只写所有的序列化/反序列化代码我。我在这里做错了什么,还是不可能允许像 XmlSerializer 这样的类在反序列化期间设置类的私有成员,同时使类的使用者无法覆盖其成员?

更新还有另一篇文章展示了另一种对私有属性进行反序列化的方法,但我只是尝试过,它也不起作用。

以下是我尝试反序列化的类的一些示例:

结果:使用 XmlSerializer 反序列化时,没有错误,但是当我的 XML 文件的 Port 值为 1 时,_port 和 Port 的值为 0,例如<Port>1</Port>.

另一个例子:

结果:反序列化很好,但我不想要公共设置器。

我像这样反序列化类:

0 投票
1 回答
437 浏览

c# - XmlSerializer 将空格替换为 0x0020(十六进制值)

出于某种原因,我的带有空格的 XmlElements 用 _x0020 代替空格打印。

例如,

<The_0x0020_Total>当我打印出来时变成了。我使用 TextWriter 进行输出,然后使用 XmlSerializer.Serialize 打印到文件,但它不起作用。

0 投票
1 回答
449 浏览

c# - 我想用命名空间序列化

我想用 C# 序列化 xml 中的以下结构。

... 或类似的东西。我对命名空间和属性序列化感兴趣:P

等等

谢谢

0 投票
2 回答
1850 浏览

c# - XmlSerializer 特殊字符

目前我有以下代码:

我的问题是,当我给它一个欧元符号€时,当前序列化程序返回一个?,所以我尝试传递€,但它对 & 进行编码并返回 € 有人知道解决此问题的优雅方法吗?

非常感谢,

克里斯

0 投票
1 回答
1812 浏览

.net - 来自内部 XML 节点的 XML 反序列化

我正在努力让我的 .NET 对象序列化/反序列化。作为我们 XML 文件的要求,该对象必须位于名为mycompany. 这是该文件的示例:

我遇到了一个让这个反序列化的问题。我不知道如何告诉序列化程序,“嘿,确保mycompany在反序列化之前深入了解节点。”

这是我当前的反序列化代码(不考虑根节点):

我尝试执行以下代码:创建一个XmlTextStream,读取文件头节点和mycompany节点,然后将流传递给序列化程序

以上不起作用,给我一个XmlElement error: Root element is missing.

我知道有一个简单的解决方案,但我找不到它。