Salut à tous !
Arrivé récemment dans ma boîte, j'ai repris le setup créé par un stagiaire sur Inno Setup. Ne connaissant pas le langage, j'ai découvert et réussi à effectuer toutes les tâches que l'on m'a confiées. Cependant, il m'en reste une dernière (enfin 2*), sur lesquelles je bloque.
On m'a demandé de récupérer des informations présentes dans un fichier "inventory".xml, relatif à des clés de bases de données.
Les informations ressemblent à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 -<HOME_LIST> <HOME IDX="1" TYPE="O" LOC="C:oracleproduct10.2.0client_1" NAME="OraClient10g_home1"/> <HOME IDX="2" TYPE="O" LOC="C:oracleproduct11.2.0client_2" NAME="OraClient11g_home2"/> <HOME IDX="3" TYPE="O" LOC="C:oracleproduct11.2.0client_1" NAME="OraClient11g_home1_32bit"/> </HOME_LIST>
1°) Le nombre de HOME IDX peut varier.
2°) Pour chaque index, je dois insérer la valeur ",." dans le champ NLS_NUMERIC_CHARACTER.
--
J'ai fait des recherches sur Internet et j'ai toujours trouvé le même résultat : la fonction LoadValueFromXML(), créée par les utilisateurs. De plus , les forum sont en anglais, et des fois j'ai du mal à capicher ().
Voici l'extrait (j'ai simplement modifié le nom des variables propres à mon cas) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 function LoadValueFromXML(): string; var XMLDoc, xmlNode , Node: Variant; Attrib : Variant; Dir: String; XMLfile: string; valeur: string; begin Dir := 'C:Program FilesOracleInventoryContentsXML'; XMLfile := 'inventory.xml'; //Load the XML File XMLDoc := CreateOleObject('MSXML2.DOMDocument'); XMLDoc.async := False; XMLDoc.resolveExternals := False; XMLDoc.load(Dir + XMLfile); if XMLDoc.parseError.errorCode <> 0 then begin RaiseException('Error on line ' + IntToStr(XMLDoc.parseError.line) + ',position ' + IntToStr(XMLDoc.parseError.linepos) + ': ' + XMLDoc.parseError.reason); end else begin XMLDoc.getAttribute('INVENTORY/HOME_LIST'); xmlNode := XMLDoc.selectSingleNode(Dir); valeur := XMLNode.text; MsgBox(valeur,mbInformation, MB_OK); end end;
Premièrement, j'ai du mal à comprendre son fonctionnement. Je ne comprends pas comment elle peut récupérer les informations relative à un nœud.
Ensuite, je me mélange pas mal avec les variables, ce qui engendre le premier problème.
Enfin, la ligne XMLDoc.getAttribute('INVENTORY/HOME_LIST') était à l'origine XMLDoc.setAttribute('HOME_LIST', 'HOME IDX') (pour mon cas).
J'aimerais donc savoir si quelqu'un pourrait m'aiguiller la-dessus.
Merci
* : http://www.developpez.net/forums/d15...-partir-d-bat/
Partager