问题标签 [xml-deserialization]

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 投票
4 回答
552 浏览

.net - C#中的Xml序列化

我正在尝试遵循有关 XML 序列化的微软教程,但我遇到了一些问题!

这是 XML 文件,用作输入:

这是绑定 XML 的类:

此函数将 XML 读入“OrderedItem”类:

这是读取和重写后的 XML:

如您所见,命名空间已扩展。我应该如何编写输出,以获得具有命名空间标签的相同 XML,而不是 uri?

0 投票
1 回答
684 浏览

c# - 反序列化动态/可变内部 XML

我有一个 XML 配置文件:

我对固定元素进行了序列化和反序列化。但我想阅读未知的用户定义元素。

我该怎么做?

我正在尝试这样做,但它什么也没给我 [XmlText] public String UserDefinedElement{ get; 放; }

感谢你的回答。

0 投票
2 回答
143 浏览

java - XML 反序列化器中的奇怪行为

在使用 SAX 时,我在 Java 中遇到了一些奇怪的行为。正在设置值,但随后在输出的 toString 方法中恢复为默认值。这似乎真的很不寻常。我查看了代码并输出了变量的内存地址,一切都以正确的顺序发生并且似乎做得正确。其他反序列化的 XML 元素很好,所以我无法解决。

我的系统是这样工作的:有些类具有抽象方法,用户在其中定义属性助手和元素处理程序。元素处理程序处理基于子 XML 元素的子类的生成,而属性处理程序从构造函数中获取属性列表,并通过属性帮助程序使用此列表,通过属性帮助程序中实现的抽象方法设置字段。

这是有问题的类:

我还有一些调试输出,其中查找了属性并调用了相关的实现方法。

无论如何,这是输出:

注意内存值——这很奇怪。整个 toString 输出(来自转换后的 XML 根元素)位于最后一行。

无论如何,谢谢你的帮助,
克里斯

编辑:我为变量设置了一些不同的默认值,而不是 0:

这是设置过程中的结果:

所以最初发生了一些奇怪的事情,值是 0 而不是 1000。非常奇怪。当涉及到最终输出时,正在输出的对象的值是 1000 而不是 0(字段默认值的初始值)。

Edit2:我现在在标题中有以下内容:

设置属性时递减。一个例子是:

oString 语句现在是:

打印出来的内容如下:

属性设置器和 toString 中的同步语句用于检查 JVM 错误,但它没有做任何事情。奇怪吧?

编辑3:

我将字段更改为 Atomic*。我必须认真地把它归结为一个 JVM 错误,因为原子字段是最终的,并且在内部由默认值设置,我得到了 NullPointerException。

例外:

编辑 4:我从 JDK1.7 更改为 1.6 的稳定版本,同样的问题。

我刚刚想过,也许在构造函数期间未设置字段,然后再设置。我不确定初始化的顺序,但在这种情况下可能搞砸了。无论如何,我会把它放在一个 init 方法中,看看它是否有任何作用。奇怪的是,它在单个类的情况下不起作用。它适用于其他人。

0 投票
3 回答
23814 浏览

c# - 使用特殊字符反序列化 XML 的快速方法

我正在寻找反序列化 xml 的快速方法,其中包含特殊字符,如 ö。

我正在使用 XMLReader,但它无法反序列化此类字符。

有什么建议吗?

编辑:我正在使用 C#。代码如下:

0 投票
2 回答
6084 浏览

xml - 在 Actionscript 中将 XML 字符串转换为对象

我对 AS 很陌生,我假设有一种方法可以做到这一点,但我只是没有弄清楚。基本上,我正在尝试使用返回 xml 并返回 Object 的服务,而不管 xml 的结构如何。在 .Net 中,我使用XmlSerializer.Deserialize类...在 AS 中是否有等价物?

我能够找到SimpleXMLDecoder但我似乎无法让它工作 - 它看起来也可能只适用于节点?不管怎样,那里的例子很少而且很难理解,我只想知道如何像这样使用 xml:

并简单地将它变成一个对象- 如果不编写我自己的解析器,这可能吗?谢谢你。

0 投票
1 回答
1345 浏览

c# - 使用c#反序列化数组元素中的数组元素

我的 XML 文件如下所示:

我正在尝试访问 ItemCollection 中的项目,但到目前为止,一点运气都没有;这就是我的代码的样子:

我的对象看起来像:

我可以很好地获取版本,并且层次结构看起来很好,但是 Item 对象中的 Name 和 Age 始终为空。我尝试过 XmlElement 而不是 XmlArray,但这也不起作用。

任何有关如何实现这一目标的帮助将不胜感激!!!

编辑:我给出的示例是我收到的 XML 的简化:它实际上是从 BING API 对位置 REST 服务的调用;我得到的 XML 看起来像这个 URL 中的那个:

http://msdn.microsoft.com/en-us/library/ff701710.aspx

我试图在我的结构中放入的是 Location 元素中的信息。

我的真实对象如下所示:

希望这将进一步阐明我在这里想要实现的目标。

谢谢!

0 投票
1 回答
640 浏览

c# - C# 使用多个可能的命名空间反序列化 xml

我创建了一个 API 包装类库,用于使用来自第 3 方的 rest API。

直到他们最近在他们的产品的最新版本中更新了 API 并向根元素添加了一个命名空间,这一切都在工作,现在我的反序列化代码失败了。

我的一门课的一个例子:

如果我将 XmlRootAttribute 中的 Namespace 属性设置为返回的新命名空间,那么它会再次正常工作。

但我需要支持 API 的两个版本(命名空间和非命名空间),因为我无法确定哪个版本的 API 可用。

我想在不为不同版本复制类的情况下让它工作,但不确定是否可能。

感谢您的任何意见/建议。

0 投票
1 回答
158 浏览

c# - 重命名所涉及的类后的 XmlDeserialization

我在数据库中有一堆 xml 序列化对象。

但是,我重构并重命名了所涉及的类,因此从数据库反序列化很困难。

我认为通过[XmlRoot("DB_Class_Name")]在重命名的类顶部添加术语可以解决问题,但似乎没有。

[XmlRoot]有没有办法使用诸如等标签来解决问题[XmlElement],而无需将我的类重命名为它们的旧类名,也无需编写特殊的反序列化函数?

此外,在使用 xmldeserializaiton 和标签时,是否有任何关于幕后发生的事情的好资料[XmlRoot]

0 投票
1 回答
1077 浏览

c# - CityGML 反序列化问题

我目前正在研究 CityGML (de)serializer - 我需要某些相应对象的 C# 类 - 我在 System.Xml.Serialization.XmlSerializer 实例所需的根类方面遇到了一些问题。不知道大家对CityGML有多熟悉,这里先说一下情况。我还描述了我是如何创建我的类的,如果你想跳过这个,你可以从/ /* 标记开始阅读:

CityGML 由多个 .xsd 文件组成,每个文件都是描述某种类型元素(appearance.xsd、transports.xsd、building.xsd、vegetation.xsd 等)的模块,还有一个根文件 CityGML.xsd。如您所料,每个模块都需要此根文件中的元素。还有一个事实是 CityGML 实际上从 GML 继承了很多,所以从 GML .xsd 文件导入也是必要的。

到目前为止,在 C# 类生成方面,我尝试了两种方法,都使用经典的 xsd.exe: - 创建一个 .cs 文件,其中将包含我需要的所有 CityGML 类 - 一个命令行:

对于每个命令,最后一个 .xsd 是所需的模块,而其他的则是必要的导入。

不幸的是,尽管 xsd.exe 处理来自其他 .xsd 文件的导入,并且它会创建所需文件以及导入文件的类,但它非常“直接”地执行此操作,将所有这些类堆叠在一个 .cs 文件中。显然,无法将所需的类与不同 .cs 文件中的导入类分开。因此,我的第一个问题是是否有任何(反)序列化工具,类似于 XSD.EXE,可以处理导入的 .XSD 文件并创建特定的 .CS 文件层次结构?这将避免重复,例如,上述所有模块 .cs 文件中的 feature.xsd 类。

/ /*

继续前进,实际上给我带来麻烦的问题与 XmlSerializer 实例有关,该实例无法创建,因为基本的 CityGML 对象类型 CityModelType(也是整个层次结构中的根类)并不完全有效:

这个赋值首先产生了一个关于使用 XmlTextAttribute 定义 string[] 的错误,这使得 CityModelType 的“反射”变得不可能。我用 XmlAttributeAttribute 替换了 XmlTextAttribute 并且我无法追踪其来源的当前消息是这些(是的,我正在用法语工作):

首先, LineStringSegmentType 的唯一出现与曲线有关,我没有在我的 .gml 文件中使用。它们的定义如下:

...在这里使用它们:

...来自这个 gml:geometryPrimitives.xsd 片段:

我看不出问题出在哪里,这很奇怪。希望早日收到你的消息。谢谢。

干杯,维克多

0 投票
2 回答
366 浏览

c# - 当我只知道祖先类的类型时,如何反序列化 XML?

假设我想反序列化它(我已经删除了命名空间以使事情变得更简单):

TextField 继承自 FormField,所以在我的 FormField 类定义中看起来像这样:

TextField 类如下所示:

我尝试使用这个反序列化:

我得到一个 SerializationException:“期望元素 'FormField'...”