Bonjour à tous
Je dois générer un fichier xml à partir d'une simple requête select.
Savez vous ou je peux trouver un exemple d'utilisation du package DBMS_XMLQUERY .
Merci d'avance
Version imprimable
Bonjour à tous
Je dois générer un fichier xml à partir d'une simple requête select.
Savez vous ou je peux trouver un exemple d'utilisation du package DBMS_XMLQUERY .
Merci d'avance
Bonjour,
Pour la doc, je n'ai qu'une seule référence à te donner c'est le bouquin Oracle 9i sous Windows de G.briard, où il y a tout un chapitre sur XML.
Il y a bien sur aussi la doc official d'oracle.
exemple de réponse à ta question
@Code:
1
2
3
4
5
6 SELECT XMLELEMENT(NAME "CLIENT", XMLATTRIBUTES(C.CLIENTID AS ID), XMLELEMENT(NAME "NOM",C.NOM), XMLELEMENT(NAME "PRENOM",C.PRENOM)) FROM CLIENT C;
Voici un post où il y a un exemple d'utilisation de dbms_xmlquery :
http://www.developpez.net/forums/vie...t=dbmsxmlquery
J'ai retrouvé çà aussi dans quelques tests que j'avais réalisé (si cela peut t'aider)
@Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 --PL/sql dom API --PL/sql xml parser --PL/sql xslt Processor --Création d'un document DOM avec XMLtype declare document DBMS_XMLDOM.DOMDocument; buffer VARCHAR2(30000); begin document:=DBMS_XMLDOM.newDOMDocument(sys.XMLTYPE('<personne><nom>LENGLET</nom><prenom>Thierry</prenom></personne>')); DBMS_XMLDOM.writeToBuffer(document,buffer); DBMS_OUTPUT.PUT_LINE(buffer); end; --Création d'un noeud d'élément à partir d'un document vide declare document DBMS_XMLDOM.DOMDocument; element Dbms_XmlDOM.DOMElement; noeud DBMS_XMLDOM.DOMNode; begin document:=DBMS_XMLDOM.newDOMDocument; element:=DBMS_XMLDOM.createElement(document,'MON ELEMENT'); noeud:=DBMS_XMLDOM.makeNode(element); DBMS_OUTPUT.PUT_LINE(DBMS_XMLDOM.getNodeName(noeud)); DBMS_OUTPUT.PUT_LINE(DBMS_XMLDOM.getNodeValue(noeud))); end; --PLSQL xml parser pour XMLType --traitement d'un document XML avec le XMLPARSER plsql DECLARE document VARCHAR2(2000); documentDOM DBMS_XMLDOM.DOMDocument; noeud DBMS_XMLDOM.DOMNode; monParser DBMS_XMLPARSER.Parser; begin document:='personne><nom>LENGLET</nom><prenom>Thierry</prenom></personne>'; monParser:=DBMS_XMLPARSER.newParser; DBMS_XMLPARSER.parseBuffer(monParser,document); documentDOM:=DBMS_XMLPARSER.getDocument(monParser); noeud:=DBMS_XMLDOM.makeNode(documentDOM); end; --PL/sql xslt processor pour xmltype declare document VARCHAR2(2000); xsldocument VARCHAR2(2000); monParser DBMS_XMLPARSER.Parser; documentDOM DBMS_XMLDOM.DOMDocument; documentDOMxslt DBMS_XMLDOM.DOMDocument; xsl DBMS_XSLPROCESSOR.Stylesheet; documentDOMFragment DBMS_XMLDOM.DOMDocumentFragment; noeud DBMS_XMLDOM.DOMNode; processeur DBMS_XSLPROCESSOR.Processor; buffer VARCHAR2(2000); begin document:='<Employe> <Nom>SAMMARCO</Nom> <Prenom>Thierry</Prenom> <Salaire>1200</Salaire> <Emploi>Consultant</Emploi> </Employe>'; xsldocument:='<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output encoding="UTF-8"/> <xsl:template match="*"> <xsl:copy> <xsl:apply-templates select="*|text()"> <xsl:sort select="name(.)" data-type="text" order="ascending" /> </xsl:apply-templates> </xsl:copy> </xsl:template> <xsl:template match="text()"> <xsl:value-of select="normalize-space()"/> </xsl:template> </xsl:stylesheet>'; monParser:=DBMS_XMLPARSER.newParser; DBMS_XMLPARSER.parseBuffer(monParser,document); documentDOM:=DBMS_XMLPARSER.getDocument(monParser); DBMS_XMLPARSER.parseBuffer(monParser,xsldocument); documentDOMxslt:=DBMS_XMLPARSER.getDocument(monParser); xsl:=DBMS_XSLPROCESSOR.newStylesheet(documentDOMxslt, ''); processeur:=DBMS_XSLPROCESSOR.newProcessor; --Application de la feuille de style documentDOMFragment:=DBMS_XSLPROCESSOR.processXSL(processeur,xsl,documentDOM); noeud:=DBMS_XMLDOM.makeNode(documentDOMFragment); --l'API DOM pour XMLType peut être utilisée ici DBMS_XMLDOM.writeToBuffer(noeud,buffer); DBMS_OUTPUT.PUT_LINE(buffer); end;
Merci à tous