Page 1 sur 1

[R] Lecture XML et suppression de valeur

Posté : lun. 15 déc. 2008 14:25
par AlbatorV
Bonjour, j'ai besoin de faire un utilitaire pour lire un fichier xml, verifier le chemin des valeurs entre <pathstring> </pathstring> et de supprimer la partie <path color... jusqu'a </path> si le chemin n'existe pas...

Code : Tout sélectionner

<?xml version="1.0" encoding="UTF-8"?>
<foldercolors>
    <path color="{2F499E2B-8B6E-4B80-8E3B-C73E032E801F}">
        <dir>
            <pathstring>C:\EXISTE</pathstring>
        </dir>
    </path>
    <path color="{FEDC8A0B-6F3B-4113-A733-17A008C87ADB}">
        <dir>
            <pathstring>C:\NEXISTEPAS</pathstring>
        </dir>
    </path>
</foldercolors>
J'ai cherché et trouvé XMLDomWrapper.au3 mais je n'arrive à rien snifff :? ...
Pouvez-vous m'aiguillé ?

Re: [..] Lecture XML et suppression de valeur

Posté : lun. 15 déc. 2008 17:47
par Tlem
Sujet plus ou moins déjà traité.
http://www.autoitscript.fr/forum/viewto ... f=3&t=2055

Re: [..] Lecture XML et suppression de valeur

Posté : mar. 16 déc. 2008 08:53
par AlbatorV
Merci pour le lien...
Mais je n'arrive pas à lire dans le fichier...

Code : Tout sélectionner

#include "_XMLDomWrapper.au3"
#include <Array.au3>

$sFile = "C:\TEMP\foldercolors.oxc"
        
If FileExists($sFile) Then
    $ret = _XMLFileOpen ($sFile)
    $param2=_XMLGetValue('/foldercolors/path/dir')
    _ArrayDisplay($param2,"TEST")       
EndIf
Et pour supprimer, je pense récuperer le n° de ligne et supprimer 2 lignes avant et 2 lignes apres... il y a moyen de récuperer le numero de ligne ?

Re: [..] Lecture XML et suppression de valeur

Posté : mar. 16 déc. 2008 18:37
par Tlem
Je ne connais pas particulièrement cet UDF.
J'ai simplement vu que votre fichier XML correspond au format géré par celui-ci.

Re: [..] Lecture XML et suppression de valeur

Posté : mer. 17 déc. 2008 10:31
par jbnh
Ca devrait marcher ainsi:

Code : Tout sélectionner

#include <string.au3>

$file = FileOpen("blabla.xml", 0)


If $file = -1 Then
    MsgBox(0, "Erreur", "Fichier introuvable !")
    Exit
EndIf

$chars = FileRead($file)
$array = _StringBetween($chars, "<pathstring>", "</pathstring>")
If IsArray ($array) Then 
msgbox (0,'', $array[0] & " "  & $array[1])
;ICI TU TEST LES CHEMINS
;SI UN CHEMIN N EXISTE PAS:
;StringReplace ($chars, "<pathstring>"&$array[1 ou 0]&"</pathstring>", "")
Endif
Je sais pas trop comment tu peux tester l'existence d'un dossier.

Re: [..] Lecture XML et suppression de valeur

Posté : mer. 24 déc. 2008 10:03
par AlbatorV
Voici la solution...

Code : Tout sélectionner

#include "_XMLDomWrapper.au3"
#include <Array.au3>

$sFile = "C:\TEMP\foldercolors.xml"
$ret = _XMLFileOpen ($sFile) 
For $i=_XMLGetNodeCount("/foldercolors/path") to 1 Step -1
    $pathstring = _XMLGetValue("/foldercolors/path[" & $i & "]/dir/pathstring") 
    If NOT FileExists($pathstring[1]) Then
        _XMLDeleteNode("/foldercolors/path[" & $i & "]")
    EndIf
Next