Utilizzo un servizio Web di terze parti la cui definizione e implementazione non sono sotto il mio controllo. Questo servizio Web cambierà in futuro.Estrazione automatica XSD in linea da WSDL in file XSD
Il servizio Web deve essere utilizzato per generare un file XML che contiene alcuni degli stessi dati (rappresentati dagli stessi tipi XSD) del servizio Web più alcune informazioni aggiuntive generate dal programma.
Il mio approccio:
- creare il mio XSD riferimento alle definizioni XSD del WSDL del chiamato servizio web
- utilizzare un Java (Questo XSD include anche tipi XSD per le informazioni aggiuntive, ovviamente.) quadro associazione dati XML (come ADB o JiXB) per generare le classi di associazione dati dal mio file XSD dal passo 1
- utilizzare un framework SOAP Java (come Axis2 o CXF) con lo stesso quadro associazione dati per generare le classi di associazione dati dal WSDL (Questo mi permetterebbe di usare gli oggetti recuperati dal servizio web direttamente nei generati su XML.)
I tipi XSD che sto per utilizzare nel mio file XSD, ma sono definiti nel WSDL, sono soggetti a modifiche. Ogni volta che cambiano, mi piacerebbe elaborare di nuovo automaticamente il database XSD e WSDL. (Se il cambiamento è abbastanza significativo, questo potrebbe innescare un certo sforzo di sviluppo (ma di solito non)..)
Il mio problema:
Nel passaggio 1 Ho bisogno di un XSD riferendosi agli stessi tipi usati per il Web Servizio.
Il WSDL fa riferimento a un altro WSDL, che si riferisce a un altro WSDL, ecc. Infine esiste un WSDL con i tipi XSD in linea necessari. Per quanto ne so non c'è modo di fare direttamente riferimento ai tipi XSD in linea di un WSDL da un XSD.
L'approccio che ritengo più fattibile è includere un passaggio aggiuntivo nell'elaborazione automatica (prima del collegamento dati) che estrae l'XSD in linea dal WSDL in altri file XSD. Questi altri file XSD possono quindi essere indirizzati dal mio file XSD.
Le cose che mi piacerebbe evitare:
- Copiare manualmente incollando il XSD inline in un file XSD
- Eventuali passaggi manuali (come la determinazione della (Cerco un processo automatico.). WSDL che contiene manualmente i tipi in linea. (Anche la posizione di tale WSDL cambia).)
- Utilizzo di xsd: any in my own XSD. Vorrei che il mio file XSD fosse corretto.
- Utilizzando una tecnologia non-Java (come NET)
- Enormi quantità di attuazione (ma suggerimenti su come si potrebbe implementare un tale estrazione sono i benvenuti in ogni caso)
PS: Ho trovato alcune domande simili, ma tutti hanno avuto risposte del tipo: WTH, vuoi farlo? Questa è la ragione della mia storia di fondo piuttosto ampia.
ho già capito che sarebbe stato necessario qualcosa di simile. Mi è stato effettivamente speravo in qualcosa di più simile quadro: ** per (XmlSchema XmlSchema: wsdl.extractNamespaceSchemas()) xmlSchema.writeFile (ns2FileName (xmlSchema.getTargetNamespace())); ** Aah, un mondo imperfetto ... –
@Steven : suona come un'opportunità per un progetto open source per portare il mondo un po 'più vicino alla perfezione ;-) –