Domanda

Devo generare documenti XML in PL / SQL da alcune tabelle in Oracle. Non l'ho mai fatto prima e ho scoperto che sembrano esserci alcuni modi principali per farlo:

  • API xmldom
  • funzioni xml (come xmlelement, xmlagg, xmlroot)
  • funzioni dbms_xmlgen

Ci sono 65 tabelle a cui verrà fatto riferimento per generare un singolo documento e dovrò convalidare l'output su un xsd. I documenti saranno generati in un batch (piuttosto che su richiesta) - Non so se questo faccia la differenza. Utilizzando Oracle 10g.

Inizialmente ero incline a usare il pacchetto xmldom perché sembrava più flessibile, ma ho difficoltà a trovare buoni esempi o documentazione per esso, mentre le funzioni xml sembrano meglio documentate e generalmente più popolari. C'è una ragione per questo?

Quale approccio le persone generalmente raccomandano per questo tipo di attività?

È stato utile?

Soluzione

Nella mia esperienza, DBMS_XMLGEN è buono per traduzioni da dati a xml veloci e sporche, ma non mi è mai piaciuto molto perché devi passare l'SQL come stringa. Inoltre, il controllo sui nomi degli elementi e sulla struttura ROWSET / ROW è fortemente limitato.

Le funzioni XML sono estremamente utili, e la mia preferita, se hai a che fare con strutture relativamente semplici. Una volta entrati in più livelli XMLAgg, ad esempio, scopro che si trasforma rapidamente in un pasticcio confuso.

XMLDOM è il modo più flessibile per generare XML, specialmente se la struttura è più complessa o è coinvolta una logica iterativa. Lo svantaggio principale qui è che è essenzialmente un wrapper attorno al DOM Java in cui la maggior parte dei metodi accetta un input DOMNode, ma PL / SQL non supporta direttamente il polimorfismo, quindi si finisce con molti cast espliciti tra DOMElement e DOMNode e viceversa, ecc. Generalmente creo il mio pacchetto di procedure sovraccariche per incapsulare tutto questo e renderlo un po 'meno doloroso con cui lavorare.

Altri suggerimenti

Beh, non ho mai usato Oracle per generare documenti XML molto complessi, ma usare DBMS_XMLDOC è abbastanza semplice.

Puoi vedere uno scheletro qui (e qui , solo il codice pl / sql). Utilizza anche Google Ricerca Codice, c'è sicuramente qualcosa in più da trovare.
Poi c'è il riferimento DBMS_XMLDOM che aiuta anche se la documentazione è piuttosto secca.

Assicurati di leggere anche questi due post:
http://www.liberidu.com/blog/?p=365 < br> http://www.liberidu.com/blog/?p=369

In alternativa puoi esaminare la generazione di XML usando una procedura memorizzata Java.

In genere utilizzo le funzioni xml ( XMLElement , XMLForest , ecc.) perché ho il controllo su XSD. Faccio in modo che l'XSD corrisponda generalmente alla struttura dei documenti, quindi le cose si abbinano bene insieme.

Se lo schema con cui stai cercando di lavorare è eccezionalmente complesso o funky dovresti considerare i metodi DBMS_XMLGEN o DOM .

Ecco una buona discussione di alcune opzioni disponibili:

http: // asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:4980337843276

Anche se cerchi " Sean Dillon " su AskTom otterrai una buona raccolta di articoli che descrivono in dettaglio vari problemi e soluzioni usando XML all'interno di Oracle.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top