0

我正在尝试使用 jsonix 来解组来自 SOS DescribeSensor 请求的 xml 响应。在更广泛的范围内,我将使用 jsonix 来解组来自 SOS 的所有响应,尤其是 2.0。我注意到响应使用 SML 或 SensorML 命名空间,因此我添加了额外的模块依赖项和子依赖项(即 GML_3_1_1、SWE_1_0_1、IC_2_0、SMIL_2_0、SMIL_2_0_Language,当然还有 SensorML_1_0_1)。在我添加这些之前,我注意到返回的是一个通用的 json(参见第一个屏幕截图,特别是在 sml:physicalsystem 附近)。添加依赖项后,在我不理解的部分解组过程中,我的控制台中出现错误(请参见第二个屏幕截图)。这是来自服务器的 xml 响应的链接以供参考。https://drive.google.com/file/d/0B8LdnPVJpHz7M3VGb0FZc2lQcjQ/view?usp=sharing。我真的很想了解这是否与我创建上下文时模块的顺序有关,尽管我相信这很好。一旦找到解决方案,我就有两个后续问题。

  1. 期望(通常)使用从 highsource github 页面上的 ogc-schemas 构建的模块应该允许我通过 jsonix 处理所有响应是否合理?即每个元素将始终映射到定义的类型。我知道这些模式/映射非常复杂。

  2. 是否有任何其他工具可以用来验证模块或根据模式验证它们以使生活更轻松,而不是在 jsonix 似乎解析不正确时逐个跟踪元素或跟踪各种模块文件?

提前致谢 - Richard3d

var context = new Jsonix.Context([XLink_1_0, GML_3_2_1, IC_2_0, SMIL_2_0, SMIL_2_0_Language, GML_3_1_1, SWE_1_0_1, SensorML_1_0_1, OWS_1_1_0, SWE_2_0, SWES_2_0, WSN_T_1, WS_Addr_1_0_Core, OM_2_0, ISO19139_GMD_20070417, ISO19139_GCO_20070417, ISO19139_GSS_20070417, ISO19139_GTS_20070417, ISO19139_GSR_20070417, Filter_2_0, SOS_2_0]);

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

1

免责声明:我是 jsonix 的作者ogc-schemas的主要开发者。

首先,你在正确的轨道上,坚持下去。

是的,如果您拥有所有必需的映射,那么您应该获得一个“漂亮”的 JSON,其中包含具有特定类型、基数等的所有属性。Jsonix
目标是提供具有确定性结构、类型的双向 XML<->JSON 转换和基数。OGC Schemas 的目标是为所有 OGC Schemas 提供 JAXB 和 Jsonix 映射。 因此,将这两者结合起来应该可以将任何 OGC XML 从/到 JSON 转换。

“通用 JSON”实际上只是 DOM。如果某个属性允许 DOM 并且 Jsonix 没有对某些元素的映射,则将其视为 DOM。您只是缺少 SensorML 映射。

没错,架构依赖的结构非常复杂。但这是我们应该对 OGC 采取的措施。:) 你需要十几个模式来读取传感器数据,这有点疯狂。我实际上打算构建依赖项的自动加载,但尚未实现此功能。

下一个GML_3_1_1.AbstractFeatureType问题大概就是这个问题了。尝试更改映射顺序(移至GML_3_1_1较早的位置)。实际上映射的顺序不应该很重要,但是,有一个错误。

交叉检查的工具——不,可能不是。我的方法是进行往返测试(unmarshal-marshal-unmarshal-check 相等性)。根据经验,一开始通常有一些警告,但后来它是按设计工作的。当然,Jsonix 中存在错误,并且映射可能存在问题,但这已得到解决。

也觉得在这里创建一个支持项目:

https://github.com/highsource/jsonix-support

例如https://github.com/highsource/jsonix-support/s/sos.

以下是此类支持项目的示例:

https://github.com/highsource/jsonix-support/tree/master/l/lightstalker89

我需要这个,因为仅从 Google Drive (a) 下载 XML 需要我努力建立支持项目 (b) 具有法律上的危险,因为我不知道这个 XML 来自哪里以及我是否有权/许可将这些文件添加到我的测试套件。

于 2016-06-15T06:25:49.760 回答