[R] Lecture XML et suppression de valeur

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
AlbatorV
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 05 nov. 2008 11:38
Status : Hors ligne

[R] Lecture XML et suppression de valeur

#1

Message 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é ?
Modifié en dernier par AlbatorV le mer. 24 déc. 2008 10:04, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#2

Message par Tlem »

Sujet plus ou moins déjà traité.
http://www.autoitscript.fr/forum/viewto ... f=3&t=2055
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
AlbatorV
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 05 nov. 2008 11:38
Status : Hors ligne

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

#3

Message 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 ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#4

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

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

#5

Message 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.
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
Avatar du membre
AlbatorV
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 05 nov. 2008 11:38
Status : Hors ligne

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

#6

Message 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
Répondre