stopsoftwarepatents.eu petition banner

AutoIt Français

Communauté Francophone AutoIt
* Connexion   * M’enregistrer

Heures au format UTC + 1 heure


Règles du forum

Poster un nouveau sujet Répondre au sujet  [ 12 messages ] 
Auteur Message
Hors ligne
Niveau 3
Niveau 3
Inscription: Mar 28 Aoû 2007 11:13
Messages: 32

Dernier message
Sujet du message: [R] Recherher un texte entre des balises
MessagePosté: Dim 14 Mar 2010 16:40 

Bonjour,

Je cherche à liste le contenu des GPO d'un AD.

Je dispose d'une liste de fichier xml, dans ces fichiers se trouvent les infos que je recherche insérées entre des balises.

Par exemple pour le nom il faut que je cherche la ligne :
<Name>GPO-Firewall_VNC</Name>
le groupe :
<SOMName>Portables</SOMName>

et ainsi de suite..

Le soucis c'est que ces infos ne sont jamais à la même ligne dans mes fichiers xml.

Je pense qu'il faut que cherche du côté de la fonction "FileRead" pour trouver mes balises, mais après je ne sais pas comment récupérer ce qu'il y a entre.

Pouvez vous me donner une piste ?

Merci


Dernière édition par guillaume le Dim 14 Mar 2010 20:32, édité 1 fois.

 Profil  
 
AutoIt Français
Hors ligne
Niveau 6
Niveau 6
Avatar de l’utilisateur
Inscription: Mer 28 Oct 2009 11:31
Messages: 252
Age: 16

Localisation: Libourne
Sujet du message: Re: [..] Recherher un texte entre des balises
MessagePosté: Dim 14 Mar 2010 18:42 

Ben remplace les balises pas "" :lol:

 Profil  
 
AutoIt Français
Hors ligne
Niveau 3
Niveau 3
Inscription: Mar 28 Aoû 2007 11:13
Messages: 32
Sujet du message: Re: [..] Recherher un texte entre des balises
MessagePosté: Dim 14 Mar 2010 19:04 

je ne suis pas certain de comprendre :?
et j'ai déjà beaucoup de "" dans mon fichier.

 Profil  
 
AutoIt Français
Hors ligne
Niveau 6
Niveau 6
Avatar de l’utilisateur
Inscription: Mer 28 Oct 2009 11:31
Messages: 252
Age: 16

Localisation: Libourne
Sujet du message: Re: [..] Recherher un texte entre des balises
MessagePosté: Dim 14 Mar 2010 19:11 

Voici une fonction que j'ai coder il y a a très peu de temps :
Code

Func _DECOMPOSED_CONTACT_LIST()
$FILENAME = @TempDir&"\cl.txt"
    $CONTENU_FILENAME = FileRead($FILENAME)
    $SEARCH = '<number>'
    $REPLACE = ""
    $CONTENU_FILENAME = StringReplace($CONTENU_FILENAME, $SEARCH, $REPLACE)
    FileDelete($FILENAME)
    FileWrite($FILENAME, $CONTENU_FILENAME)
    ;---
    ;Suppression du texte après le texte entre balise
    ;---
    $CONTENU_FILENAME = FileRead($FILENAME)
    $SEARCH = '</number>'
    $REPLACE = ""
    $CONTENU_FILENAME = StringReplace($CONTENU_FILENAME, $SEARCH, $REPLACE)
    FileDelete($FILENAME)
    FileWrite($FILENAME, $CONTENU_FILENAME)
    ;---
    ;Suppression des espaces
    ;---
    $CONTENU_FILENAME = FileRead($FILENAME)
    $SEARCH = " "
    $REPLACE = ""
    $CONTENU_FILENAME = StringReplace($CONTENU_FILENAME, $SEARCH, $REPLACE)
    FileDelete($FILENAME)
    FileWrite($FILENAME, $CONTENU_FILENAME)
EndFunc ;=> _DECOMPOSED_CONTACT_LIST()
 


J'espère que cela peut vous aidez ^^

Cordialement Narmeke

 Profil  
 
AutoIt Français
Hors ligne
Niveau 3
Niveau 3
Inscription: Mar 28 Aoû 2007 11:13
Messages: 32
Sujet du message: Re: [..] Recherher un texte entre des balises
MessagePosté: Dim 14 Mar 2010 19:51 

ok oui je comprends un peu mieux.

je vais essayer avec cette méthode.

Merci pour votre aide !

 Profil  
 
AutoIt Français
Hors ligne
Niveau 2
Niveau 2
Inscription: Dim 08 Fév 2009 23:25
Messages: 27
Sujet du message: Re: [..] Recherher un texte entre des balises
MessagePosté: Dim 14 Mar 2010 20:20 

Bonsoir,

Sans vouloir faire de l'ombre à "Narmeke" :wink: je te propose le code ci dessous en l'adaptant à tes besoins :
Code
$fichier_xml = FileOpen(@ScriptDir & "\MonFichier.xml")
If $fichier_xml = -1 Then
    MsgBox(0, "Erreur", "Impossible d'ouvrir le fichier.")
    Exit
EndIf
$search = FileRead($fichier_xml)
FileClose($fichier_xml)
$val1 = StringRegExp($search, "<Name>([^<]+)<\/Name>", 1)
$val2 = StringRegExp($search, "<SOMName>([^<]+)<\/SOMName>", 1)
MsgBox(0, "Résultat", "GPO : " & $val1[0] & @CRLF & "Gatégorie : " & $val2[0])
 
Fichier(s) joint(s)

MonFichier.xml

[ 5.24 Kio | Téléchargé 17 fois ]

Bonne soirée.

 Profil  
 
AutoIt Français
Hors ligne
Niveau 3
Niveau 3
Inscription: Mar 28 Aoû 2007 11:13
Messages: 32
Sujet du message: Re: [..] Recherher un texte entre des balises
MessagePosté: Dim 14 Mar 2010 20:30 

whaou merci je n'en attendais pas tant !

Merci beaucoup je vais pouvoir faire mes tests

 Profil  
 
AutoIt Français
Hors ligne
Niveau 6
Niveau 6
Avatar de l’utilisateur
Inscription: Mer 28 Oct 2009 11:31
Messages: 252
Age: 16

Localisation: Libourne
Sujet du message: Re: [R] Recherher un texte entre des balises
MessagePosté: Dim 14 Mar 2010 20:48 

Sa marche aussi, c'est même plus court xD
Merci :lol:

 Profil  
 
AutoIt Français
Hors ligne
Niveau 3
Niveau 3
Inscription: Mar 28 Aoû 2007 11:13
Messages: 32
Sujet du message: Re: [R] Recherher un texte entre des balises
MessagePosté: Dim 14 Mar 2010 21:05 

ça fonctionne impec merci.

Par contre je recontre un souci avec certains fichiers xml qui comportent plusieurs balises <Name></Name>
Je n'avais pas pensé à ça, du coup ça me fait un message d'erreur.

Si vous avez idée je suis preneur !

Je vais voir si je peux pas lire le fichier par lignes et creer d'autres variables.

 Profil  
 
AutoIt Français
Hors ligne
Niveau 2
Niveau 2
Inscription: Dim 08 Fév 2009 23:25
Messages: 27
Sujet du message: Re: [R] Recherher un texte entre des balises
MessagePosté: Dim 14 Mar 2010 22:11 

Bonsoir,

Pas de souci, il suffit de modifier le flag de "StringRegExp" en "3", de récupérer le nombre de valeurs à l'aide d'un UBound. Ensuite, à toi de gérer la façon dont tu veux traiter le, les résultats.

En partant de mon premier exemple :
Code
$fichier_xml = FileOpen(@ScriptDir & "\MonFichier.xml")
If $fichier_xml = -1 Then
    MsgBox(0, "Erreur", "Impossible d'ouvrir le fichier.")
    Exit
EndIf
$search = FileRead($fichier_xml)
FileClose($fichier_xml)
$val1 = _balise("Name")
$val2 = _balise("SOMName")
MsgBox(0, "Résultat", "GPO : " & $val1 & @CRLF & "Catégorie : " & $val2)
Func _balise($attribut)
    $val = @CRLF
    $myarray = StringRegExp($search, "<" & $attribut & ">([^<]+)<\/" & $attribut & ">", 3)
    For $i = 0 To UBound($myarray) - 1
        $val &= $myarray[$i] & @CRLF
    Next
    Return $val
EndFunc
 
Fichier(s) joint(s)

MonFichier.xml

[ 5.32 Kio | Téléchargé 19 fois ]

Si souci, n'hésite pas à poster un exemple de ton fichier xml.

Bonne soirée.

 Profil  
 
AutoIt Français
Hors ligne
Niveau 3
Niveau 3
Inscription: Mar 28 Aoû 2007 11:13
Messages: 32
Sujet du message: Re: [R] Recherher un texte entre des balises
MessagePosté: Dim 14 Mar 2010 22:12 

Merci beaucoup ! je vais mettre tout ça en place.

 Profil  
 
AutoIt Français
Hors ligne
Niveau 3
Niveau 3
Inscription: Mar 28 Aoû 2007 11:13
Messages: 32

Haut
Sujet du message: Re: [R] Recherher un texte entre des balises
MessagePosté: Lun 22 Mar 2010 17:07 

J'ai réussi à faire ce que je voulais, merci à vous.

J'essai d'améliorer un peu mon script mais j'ai du mal à comprendre correctement la fonction :

Code
Func _balise($attribut)
    $val = @CRLF
    $myarray = StringRegExp($search, "<" & $attribut & ">([^<]+)<\/" & $attribut & ">", 3)
    For $i = 0 To UBound($myarray) - 1
        $val &= $myarray[$i] & @CRLF
    Next
    Return $val
EndFunc


Cette fonction remplit bien son role mais j'ai du mal à bien comprendre son fonctionnement précis. (et j'aime bien comprendre chaque ligne d'un script :) )

En fait ce sont surtout les 2 lignes suivantes que je n'arrive pas à traduire :
For $i = 0 To UBound($myarray) - 1
$val &= $myarray[$i] & @CRLF

Comment peut on définir textuellement le role du "&" juste après $val ?
j'ai remarqué que quand je le retire je ne remonte que la dernière valeur de l'array.

Autre question, puis je modifier "For $i = 0 To UBound($myarray) - 1" pour par exemple ne remonter que la première valeur de l'array ? ou une que j'aurais défini en comptant au préalable le nombre total de valeur du tableau.


J'ai essayé de comprendre en lisant la doc, mais ça ne m'a pas beaucoup eclairci !

Désolé si ces questions vous paraissent bêtes.
Si vous pouvez faire quelque chose pour moi je vous en remercie !

 Profil  
 
Afficher les messages postés depuis:  Trier par  

Poster un nouveau sujet Répondre au sujet  [ 12 messages ] 

Heures au format UTC + 1 heure


Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  

AutoIt Français
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group, Sniper_Blue phpBB-3.0 Style © 2007 Sniper_E
Traduction par: phpBB-fr.com