2016-12-15 3 views
0

Ich bin vertraut mit der Verwendung einer XSD, um eine XML-Datei mit dem Prozessor ValidateXML in Apache NIFI zu validieren.Auswerten von JSON aus JSON-Schema

Wie kann ich XML in JSON transformieren und dann den ausgegebenen JSON mit einem JSON-Schema validieren, das die gleichen Ergebnisse liefert wie das XSD, das die XML-Datei validiert?

Gibt es ein anderes Tool, das ich mit NIFI verwenden kann, um diese Aufgabe zu erfüllen?

Antwort

1

Für das Konvertierungsteil können Sie this XSLT verwenden, um die XML-Datei über den Prozessor TransformXml in JSON zu konvertieren.

Ein ValidateJson Prozessor ist in den Arbeiten unter NIFI-1893, in der Zwischenzeit Sie ExecuteScript mit dem Ansatz in this post verwenden oder verwenden ExecuteStreamCommand mit Option # 2 von @Yaser ‚s Antwort.

+0

Vielen Dank für die Informationen @ Mattyb. Gibt es einen guten Ort für Updates zu neuen Prozessoren in Kürze? – SheperdsonBrown

0

Lösung # 1:

Es ist ein Open-Source-lib auf github, die Sie XML schema-JSON konvertieren.

Angenommen, Sie das XML-Schema wie folgt aussehen:

<xsd:element name="purchaseOrder" type="PurchaseOrderType"/> 
    <xsd:complexType name="PurchaseOrderType"> 
    <xsd:sequence> 
     <xsd:element name="shipTo" type="USAddress"/> 
     <xsd:element name="billTo" type="USAddress"/> 
     <xsd:element ref="comment" minOccurs="0"/> 
     <xsd:element name="items" type="Items"/> 
    </xsd:sequence> 
    <xsd:attribute name="orderDate" type="xsd:date"/> 
</xsd:complexType> 

Und die Umwandlung kann durch diesen Befehl:

java -jar jsonix-schema-compiler-full.jar 
    -generateJsonSchema 
    -p PO 
    schemas/purchaseorder.xsd 

Dann können Sie das Ergebnis verwenden Sie JSON zu validieren, Es ist jedoch nicht zu bedenken, dass dies keine Eins-zu-Eins-Zuordnung ist. Möglicherweise müssen Sie das Ergebnis ein wenig optimieren.

Lösung # 2:

können Sie diese Open-Source verwenden lib das gleiche zu tun.

Sie können die Anweisung auf der Readme-Datei folgen, aber die Nutzung das gleiche Schema würde zu konvertieren:

xsd2json /path/to/purchaseorder.xsd > /created/purchaseorder.json 

Hoffen, dass Sie, das hilft.

+0

Danke @Yaser Adel Mehraban, ich untersuche gerade die Lösung # 2, um zu sehen, ob sie die Transformation mit den erwarteten Ergebnissen implementiert. – SheperdsonBrown

Verwandte Themen