问题标签 [xml-serialization]

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 回答
2392 浏览

c# - XmlSerialization 集合作为数组

我正在尝试序列化需要使用多个同名元素的自定义类。
我尝试过使用 xmlarray,但它将它们包装在另一个元素中。

我希望我的 xml 看起来像这样。

我的代码:

0 投票
2 回答
88 浏览

.net - 如何指定列表属性的内容是 xml 序列化的,但属性本身不应该在标记中重新表示?

我有这样的课:

我想要的输出是这样的:

0 投票
5 回答
20720 浏览

python - memcached 中对象的最佳序列化方法是什么?

我的 Python 应用程序当前使用python-memcached API来设置和获取 memcached 中的对象。此 API 使用 Python 的本机pickle 模块来序列化和反序列化 Python 对象。

这个 API 使得将嵌套的 Python 列表、字典和元组存储在 memcached 中变得简单而快速,并且将这些对象读回应用程序是完全透明的——它可以正常工作。

但是我不想局限于只使用 Python,如果所有的 memcached 对象都用 pickle 序列化,那么用其他语言编写的客户端将无法工作。

以下是我考虑过的跨平台序列化选项:

  1. XML - 主要的好处是它是人类可读的,但这在这个应用程序中并不重要。XML 也占用大量空间,而且解析成本很高。

  2. JSON - 似乎是一个很好的跨平台标准,但我不确定它在从 memcached 读回时是否保留对象类型的特征。例如,根据这篇文章,元组在使用simplejson时被转换为列表;此外,似乎向 JSON 结构添加元素可能会破坏写入旧结构的代码

  3. Google Protocol Buffers——我对此非常感兴趣,因为它看起来非常快速和紧凑——至少比 XML 小 10 倍;它不是人类可读的,但这对这个应用程序并不重要;它似乎旨在支持在不破坏旧代码的情况下扩展结构

考虑到这个应用程序的优先级,memcached 的理想对象序列化方法是什么?

  1. 跨平台支持(Python、Java、C#、C++、Ruby、Perl)

  2. 处理嵌套数据结构

  3. 快速序列化/反序列化

  4. 最小内存占用

  5. 在不破坏旧代码的情况下灵活更改结构
0 投票
1 回答
646 浏览

c# - XmlSerializer 和装饰类 (C#)

我利用 XmlSerializer 与 XML 进行转换。这是一个示例类:

XML 如下所示:

我希望能够为这个类添加一个属性。例如,有时我需要向元素添加更改跟踪。一个属性,比如“IdRef”,将被添加到 myClass 元素中。

我希望将 IdRef 属性保留在 POCO 主类之外。另外,由于有很多像上面这样的类,所以我希望不必为每个类创建一个子类,添加扩展属性。也许使用 IXmlSerializer 接口创建自定义实现?

更新 我将使用下面描述的简单解决方案。我想我试图“过度思考”这个实现并在不需要的地方增加复杂性。

0 投票
6 回答
53126 浏览

.net - 如何将枚举值序列化为 int?

我想将我的枚举值序列化为 int,但我只得到名称。

这是我的(示例)类和枚举:

和代码(只是为了确保我没有做错)

这个答案(对另一个问题)似乎表明枚举应该默认序列化为整数,但它似乎没有这样做。这是我的输出:

我已经能够通过在每个值上放置一个“[XmlEnum("X")]”属性来序列化为值,但这似乎是错误的。

0 投票
3 回答
932 浏览

.net - XmlSerialization 和 Attributes - 防止属性被序列化

有没有办法让 .NET 中的 XmlSerialization 在序列化时忽略某些属性?

例如,我有一个名为 IsValid 的公共 bool 属性,它是我不想序列化的对象的唯一属性。我怎么能这样做?

0 投票
3 回答
537 浏览

c# - 反序列化 XML 文件的最有效方法是什么

阿罗哈,

我有一个想要反序列化的 8MB XML 文件。我正在使用这段代码:

这段代码运行大约一分钟,这对我来说似乎相当慢。我尝试使用 sgen.exe 来预编译序列化 dll,但这并没有改变性能。

我还有哪些其他选择来提高性能?

[编辑] 我需要反序列化创建的对象来执行(基本)转换。XML 是从外部 Web 服务接收的。

0 投票
3 回答
10143 浏览

java - JAXB 中的自定义序列化

有没有办法在 JAXB 中自定义 XML 序列化,就像在 .NET 中使用 IXmlSerializable 一样?(即使用等效的 XmlReader/Writer 直接控制对象序列化的能力)。

我已经查看了 XmlAdapter 和 @XmlJavaTypeAdapter,但它们似乎只是用于将类型转换为可序列化形式和从可序列化形式转换,这并不是我想要的。

更新:特别是,我想自定义根对象的反序列化,它以编程方式确定如何反序列化内部 XML(例如,创建具有一组特定已知类型的 jaxb 解组器)。

更新:我找到了解决问题的方法,但这是一个令人讨厌的 hack,我可能会采用其他海报建议的解决方案之一。

0 投票
2 回答
202 浏览

.net - 在 x86 目标模式下生成 XML 序列化程序集

通常我在为我的 .Net 代码生成序列化程序集的框上打勾是没有问题的。

但是,我只是将平台目标更改为“x86”而不是“任何 CPU”,以解决在 x64 架构上运行时出现的一些问题。

现在,我收到 Trigger.XMLSerialization.dll 引用 Trigger.dll [version=0.0.0.0culture=neutral] 的错误

对此有已知的解决方法吗?

0 投票
9 回答
16656 浏览

c# - 反序列化错误:命名空间“”中的 XML 元素“名称”已存在于当前范围内

这是我第一次使用 XML 序列化,在尝试解决此问题 2 天后,这让我非常抓狂。

反序列化开始时出现此错误:

错误发生在我的代码中的这一行:

我不知道为什么。没有 dup "name" 节点,所以我不明白。这是从第 3 方 REST API 的 HttpWebResponse 接收的 XML 文档。

这是完整的代码:

我的专辑类(我要反序列化的类型):

我的序列化程序类

我试图反序列化的 XML(在 VS 中调试时从传递给 CreateAlbumFromXMLDoc 方法的 Xml Doc 对象复制):

附注:只是为了它,我将该 XML 粘贴到 XML Notepad 2007 中,它告诉我:

您的 XML 文档不包含 xml-stylesheet 处理指令。要提供 XSLT 转换,请将以下内容添加到文件顶部并相应地编辑 href 属性:

我不认为这真的意味着它格式错误或其他任何东西,只是需要注意。

所以..

我的最终目标是显然通过这个该死的错误,并在我可以克服错误后使用上面的代码获取一系列专辑。我还想确保我的代码在尝试使用我的 Album 类中的 Album[] 属性或我可能在这里遗漏的任何其他东西来检索专辑的数组时是正确的。我认为它非常接近并且应该可以工作,但事实并非如此。


跟进。从那以后我一直在拔头发。

这是最新的。我暂时没有使用一些东西(来自 Marc),比如 Enum 等。我以后可能会改变它。我还拿出了日期时间的东西,因为它看起来很奇怪,而且我没有在没有错误的情况下出现错误……至少现在还没有。现在的主要问题仍然是我该死的 XML。

我猜它的格式似乎仍然存在问题?除非它掩盖了另一个问题,否则没有线索。这让我发疯。

当反序列化开始时,我现​​在收到此错误

错误发生在我的代码中的这一行: GetAlbumsResponse album = (GetAlbumsResponse)serializer.Deserialize(reader);

我如何获得对 XmL 文档的响应

我的专辑类和根级别类(感谢 Marc 的帮助......我现在明白了):

我的序列化程序类:

真正的 XML 传入,我试图反序列化(是的,它确实有 xmlns):