2014-07-10 9 views
12

Gibt es es eine standardisierte Möglichkeit Validierung von XML-Dokument mit XSD in ABAP ausführen? Soweit ich weiß, gibt es einen Ansatz, der XI/PI-Fähigkeiten nutzt, aber diese sind in unserem System nicht verfügbar.Validate XML gegen XSD in reinen ABAP

Ich denke, wir könnten auch eine Workaround verwenden: Standalone-Java-RFC oder einen Webservice in einer anderen Sprache, die XML und XSD von SAP nehmen, Validierung durchführen und das Ergebnis zurück an SAP senden; Dies kann jedoch eine komplexere und weniger zuverlässige Lösung sein.

Haben Sie ähnliche Aufgabe erfüllt und wie haben Sie es lösen? Alle Vorschläge, Kommentare und sogar Fragen der Klärung werden sehr geschätzt!

+4

Soweit ich weiß, gibt es keine Funktionsbaustein/Methode einer Klasse in SAP-Standard geliefert. Ich habe vor einiger Zeit auch danach gesucht und konnte nichts finden. Ich denke, Sie stecken fest davon, einen externen Dienst zu rufen, um das zu tun. – Jagger

+0

Eine mögliche „Lösung“ Java auf dem Anwendungsserver mit xerces und/oder konvertieren Sie die XSD DTD zu verwenden: http://scn.sap.com/thread/3535431 – hotzen

Antwort

0

Incase jemand kommt von ...

Soweit ich habe in der Lage, während sich um die Suche im Internet zu finden, so weit, gibt es keine native Möglichkeit in ABAP ist ein XML-Dokument gegen ein XSD-Schema zu validieren. Die beste Option, die Sie haben, ist eine DTD.

Meine Codebeispiele vollständig sind nicht so kopieren und einfügen und wird nicht funktionieren, aber im Grunde, was ich getan habe, waren auf dem Anwendungsserver und die XML-Datei im temporären Verzeichnis des XSD-Schema speichern. Ich rufe das Java-Programm auf und übergebe es der XML- und XSD-Datei als Argumente.

enter image description here

Hier ist der Code java ist

Java XSD Validator

Von ABAP, können Sie diesen Befehl aufrufen und die Datei, die Sie gespeichert mit OPEN DATASET passieren. Hier ist ein Codebeispiel:

ABAP Validator and OS Command

Es funktioniert, aber es ist ziemlich langsam. Ich bin auf einem Computer mit ziemlich bescheidener Hardware im Vergleich zu einem Live-Server, aber es dauert etwa 350ms pro Scheck mit einem kleinen XSD und kleinen XML.

Ich bin mir nicht sicher, ob es als Dienst oder RFC ausgeführt wird die Leistung verbessern, aber wenn Sie es wollen einen Versuch wert.

0

Verwenden Sie diesen Bericht für XSD-bezogene Validierung in ABAP: RPCXMLK0_VALIDATE
Es kann auch programmgesteuert gestartet werden.

+0

Dies verwendet die SAP-GUI die wesentliche auszuführen Validierung auf einem Windows-Client soweit ich es von der Quelle bekommen konnte. Wäre keine Lösung für einen Hintergrundjob, wenn nicht auf einem Windows Server. – nxthor

+0

Die OP hatten keine explizite Anforderung Validierung nur im Hintergrund oder ohne GUI laufen, so ist dies auch eine gültige Option. – Suncatcher