2014-07-10 20 views
12

Esiste un modo standard per eseguire la convalida del documento XML utilizzando XSD in ABAP? Per quanto ne so, esiste un approccio che utilizza le funzionalità XI/PI, ma queste non sono disponibili nel nostro sistema.Convalida XML contro XSD in puro ABAP

Penso che potremmo anche utilizzare una soluzione alternativa: rendere Java RFC standalone o un servizio Web in qualsiasi altra lingua, che prenderà XML e XSD da SAP, eseguire la convalida e restituire i risultati a SAP; ma questa potrebbe essere una soluzione più complessa e meno affidabile.

Hai incontrato un compito simile e come lo hai risolto? Tutti i suggerimenti, i commenti e persino le domande di chiarimento sono molto apprezzati!

+4

Per quanto ne so non esiste un modulo/metodo di una classe consegnato nello standard SAP. L'ho anche cercato qualche tempo fa e non sono riuscito a trovare nulla. Immagino tu sia bloccato dall'idea di chiamare un servizio esterno per farlo. – Jagger

+0

Una possibile "soluzione" che utilizza java sul server delle applicazioni per utilizzare xerces e/o convertire l'XSD in DTD: http://scn.sap.com/thread/3535431 – hotzen

risposta

0

Incase qualcuno viene da ...

Per quanto sono stato in grado di trovare durante la ricerca intorno al Internet fino ad ora, non c'è modo nativo in ABAP per convalidare un documento XML rispetto a uno schema XSD. L'opzione migliore che hai è una DTD.

I miei campioni di codice non sono completi quindi la copia e l'incollamento non funzioneranno, ma in pratica quello che ho fatto è stato salvare lo schema XSD sul server applicazioni e il file XML nella directory temporanea. Chiamo il programma java e gli passiamo il file XML e XSD come argomenti.

enter image description here

Ecco il codice Java

Java XSD Validator

Da ABAP, è possibile chiamare questo comando e passare il file salvato con OPEN DATASET. Ecco un esempio di codice:

ABAP Validator and OS Command

Funziona, ma è piuttosto lento. Sono su un computer con hardware piuttosto modesto rispetto a un server live, ma ci vogliono circa 350ms per controllo con un piccolo XSD e un piccolo XML.

Non sono sicuro se eseguirlo come servizio o RFC migliorerà le prestazioni, ma se lo si desidera vale la pena provare.

0

Utilizzare questo report per convalida XSD in ABAP: RPCXMLK0_VALIDATE
Può essere avviato anche a livello di programmazione.

+0

Questo utilizza la SAP-GUI per eseguire l'essenziale Convalida su un client Windows per quanto ho potuto ottenere dalla fonte. Non sarebbe una soluzione per un backgroundjob se non su un Windows Server. – nxthor

+0

L'OP non ha richiesto esplicitamente di eseguire la convalida solo in background o senza GUI, quindi questa è anche un'opzione valida. – Suncatcher

Problemi correlati