2016-06-15 8 views
0

Ich versuche, jsonix zu verwenden, um XML-Antwort von einer SOS DescribeSensor Anfrage zu entpacken. Im weiteren Rahmen werde ich jsonix verwenden, um alle Antworten von SOS zu demargieren, insbesondere 2.0. Mir ist aufgefallen, dass die Antwort SML- oder SensorML-Namespace verwendet. Daher habe ich die zusätzlichen Modulabhängigkeiten und Teilabhängigkeiten hinzugefügt (nämlich GML_3_1_1, SWE_1_0_1, IC_2_0, SMIL_2_0, SMIL_2_0_Language und natürlich SensorML_1_0_1). Bevor ich diese hinzufügte, bemerkte ich, dass die Rückkehr ein generischer json war (sehen Sie ersten Screenshot, besonders nahe sml: physicalsystem). Nachdem ich die Abhängigkeiten hinzugefügt habe, habe ich einen Fehler in meiner Konsole während eines Teils des Unmarshalling-Prozesses bekommen, den ich nicht verstehe (siehe zweiten Screenshot). Hier ist ein Link zu der XML-Antwort vom Server als Referenz. https://drive.google.com/file/d/0B8LdnPVJpHz7M3VGb0FZc2lQcjQ/view?usp=sharing. Ich würde gerne verstehen, ob dies etwas mit der Anordnung der Module zu tun hat, wenn ich den Kontext erstelle, obwohl ich glaube, dass es in Ordnung ist. Sobald die Lösung gefunden ist, habe ich zwei weitere Fragen.Unmarshaling SOS DescribeSensor Antwort über JSONIX liefert unvollständiges Objekt

  1. Ist es sinnvoll (im Allgemeinen) zu erwarten, dass die Module von dem OGC-Schema auf der highsource Github Seite gebaut unter Verwendung erlauben soll mich alle Antworten über jsonix zu behandeln? d.h. jedes Element wird immer einem definierten Typ zugeordnet sein. Ich weiß, dass diese Schemas/Mappings sehr kompliziert sind.

  2. Gibt es noch andere Tools, die ich verwenden kann, um die Module zu verifizieren oder sie gegen Schemas zu validieren, um das Leben einfacher zu machen, statt einzelne Elemente zu durchsuchen oder verschiedene Moduldateien zu durchsuchen, wenn Jsonix falsch zu analysieren scheint?

Vielen Dank im Voraus - 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]);

enter image description here

enter image description here

Antwort

1

Haftungsausschluss: Ich bin der Autor von jsonix und Haupt Entwickler von ogc-schemas.

Zunächst sind Sie auf dem richtigen Weg, bleiben Sie dran.

Ja, wenn Sie alle erforderlichen Zuordnungen haben, dann sollten Sie eine „nette“ JSON mit allen Eigenschaften mit spezifischen Typen bekommen, cardinatilities usw.
Das Ziel Jsonix ist bidirektionale XML < zu bieten -> JSON Konvertierung mit deterministischer Struktur, Typen und Kardinalitäten.
Das Ziel von OGC Schemas ist JAXB und Jsonix-Mappings für alle OGC-Schemas bereitzustellen.
Zusammen sollten diese beiden erlauben, alle OGC XMLs von/in JSON zu transformieren.

"Generic JSON" war eigentlich nur DOM. Wenn eine Eigenschaft DOM erlaubt und Jsonix kein Mapping für bestimmte Elemente hat, wird es nur als DOM betrachtet. Sie haben nur SensorML-Zuordnungen vermisst.

Sie haben Recht Die Struktur der Schemaabhängigkeiten ist sehr komplex. Aber das sollten wir zu OGC bringen. :) Es ist ein bisschen verrückt, dass du ein Dutzend Schemas brauchst, um Sensordaten zu lesen. Eigentlich wollte ich automatisches Laden von Abhängigkeiten aufbauen, aber diese Funktion noch nicht implementieren. Das nächste GML_3_1_1.AbstractFeatureType Problem ist wahrscheinlich this issue.Versuchen Sie, die Reihenfolge der Zuordnungen zu ändern (verschieben Sie GML_3_1_1 an die früheren Stellen). Eigentlich sollte die Reihenfolge der Zuordnungen nicht signifikant sein, aber es gibt einen Fehler.

Zu überprüfende Tools - nein, wahrscheinlich nicht. Mein Ansatz besteht darin, Roundtrip-Tests durchzuführen (Unmarshal-Marshal-Unmarshal-Check-Gleichheit). Aus Erfahrung gibt es normalerweise ein paar Vorbehalte am Anfang, aber dann funktioniert es von Entwurf. Natürlich gibt es Bugs in Jsonix und es gibt möglicherweise Probleme mit Mappings, aber das wird aussortiert.

fühlen sich auch hier ein Hilfsprojekt zu erstellen:

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

Zum Beispiel https://github.com/highsource/jsonix-support/s/sos.

Hier ist ein Beispiel für ein solches Hilfsprojekt:

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

Ich brauche das, weil nur XML-Daten aus Google Drive Download (a) hat mir Mühe die Unterstützung Projekt einzurichten (b) gesetzlich gefährlich wie Ich habe keine Ahnung, wo dieses XML herkommt und ob ich Rechte/Lizenzen habe, um diese Dateien zu meinen Testsuiten hinzuzufügen.

+0

Ich ordnete die Module bei der Erstellung des Kontextes und SensorML ist korrekt platziert und es wurde der "Typ Fehler" behoben. Randnotiz: Ich habe SensorML das erste Mal hinzugefügt, aber es war Version 1.0.1 statt 2.0, stieß auf 2.0 und behob mein Problem mit dem JSON, das nur ein generisches DOM ist. Ich weiß nicht, warum ich beim ersten Mal 1.0.1 beim Unfall gepackt habe. Nochmals vielen Dank für Ihre Hilfe @lexicore. Ich werde daran denken, ein Support-Projekt mit weiteren Fragen hinzuzufügen, ich bin mir sicher, dass dies nicht das letzte Mal sein wird, dass du von mir hörst, Prost! – user2714417