[Inno Setup] Lecture d'un fichier XML
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:
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 (:mouarf:).
Voici l'extrait (j'ai simplement modifié le nom des variables propres à mon cas) :
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
| 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 :aie:
* : http://www.developpez.net/forums/d15...-partir-d-bat/