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 付近を参照)。依存関係を追加した後、アンマーシャリング プロセスの一部でコンソールにエラーが表示されましたが、これは理解できません (2 番目のスクリーンショットを参照)。参考までに、サーバーからの xml 応答へのリンクを次に示します。https://drive.google.com/file/d/0B8LdnPVJpHz7M3VGb0FZc2lQcjQ/view?usp=sharing . コンテキストを作成するときに、これがモジュールの順序と関係があるかどうかを本当に理解したいと思いますが、それは問題ないと思います。これに対する解決策が発見されたら、フォローアップの質問が 2 つあります。

  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 スキーマ の目的は、すべての OGC スキーマに JAXB および Jsonix マッピングを提供することです。 したがって、これら 2 つを組み合わせることで、任意の OGC XML を JSON との間で変換できるようになります。

「汎用 JSON」は実際には単なる DOM でした。プロパティが DOM を許可し、Jsonix が特定の要素のマッピングを持たない場合、それは単に DOM と見なされます。SensorML マッピングが欠落しているだけです。

おっしゃる通り、スキーマの依存関係の構造は非常に複雑です。しかし、これは OGC に持っていくべきものです。:) センサー データを読み取るために数十個のスキーマが必要になるのは、ちょっとおかしなことです。私は実際には依存関係の自動ロードを構築するつもりでしたが、まだこの機能を実装していませんでした。

次のGML_3_1_1.AbstractFeatureType問題はおそらくこの問題です。マッピングの順序を変更してみてください (GML_3_1_1前の場所に移動します)。実際には、マッピングの順序は重要ではありませんが、バグがあります。

クロスチェックするツール - いいえ、おそらくそうではありません。私のアプローチは、ラウンドトリップ テスト (unmarshal-marshal-unmarshal-check equality) を行うことです。経験上、通常、最初はいくつかの注意事項がありますが、その後は設計どおりに機能します。もちろん、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 ドライブから XML をダウンロードするだけで (a) サポート プロジェクトをセットアップするのに手間がかかるからです (b) この XML がどこから来たのかわからず、これらのファイルを自分のテストスイート。

于 2016-06-15T06:25:49.760 に答える