[..] Lire et modifier un fichier xml

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

[..] Lire et modifier un fichier xml

#1

Message par ricky »

Bonjour,

j'ai un très gros problème, je dois modifier un fichier xml et je ne trouve pas la manière de le faire. Ai-je mal vu ou c'est pas possible?

Merci d'avance pour votre aide
Modifié en dernier par ricky le ven. 06 févr. 2009 14:17, modifié 1 fois.
Avatar du membre
Voodoo
Niveau 6
Niveau 6
Messages : 298
Enregistré le : ven. 20 juil. 2007 20:45
Status : Hors ligne

Re: Lire et modifier un fichier xml

#2

Message par Voodoo »

Effectivement pas de fonctions native pour traiter le xml. Par contre j'ai trouvé un udf => http://www.autoitscript.com/forum/index ... hl=xml+udf

Attention aux règles de présentation :arrow: Règles
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [...]Lire et modifier un fichier xml

#3

Message par ricky »

Merci pour ton intervention, j'avais lu les règles, mais pas assez bien. Voilà, j'ai modifié le titre.

Merci pour le lien, mais l'example dans le topic comporte une erreur, impossible de le tester...
Avatar du membre
Voodoo
Niveau 6
Niveau 6
Messages : 298
Enregistré le : ven. 20 juil. 2007 20:45
Status : Hors ligne

Re: [...]Lire et modifier un fichier xml

#4

Message par Voodoo »

Voila ce qu'il faut rajouter dans le fichier exemple:

Code : Tout sélectionner

#include <AVIConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TreeViewConstants.au3>
#include <StaticConstants.au3>
 
et il y a une erreur d'index dans la fonction _GetFirstValue donc j'ai mis

Code : Tout sélectionner

If IsArray($ret_val) and UBound($ret_val)>1  Then
 
( faut rajouter le and UBound($ret_val)>1 )

A part sa, sa fonctionne :D
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [...]Lire et modifier un fichier xml

#5

Message par ricky »

Ok, j'arrive a compiler sans erreur. Mais peux-tu m'aider? Je ne m'en sort pas... Je flanche depuis un moment sur le problème...

Voici le XML que j'ai :

Code : Tout sélectionner

<?xml version="1.0" encoding="utf-16"?>
<Config>
  <Extra Detection="Yes" Records="Yes" Compression="Yes" Allow="Yes" />
</Config>
J'aimerais ressortir ce qu'il y a dans Extra, combien d'entrées, lesquelles et si elles sont à Yes et ensuite en rajouter s'il faut?

Tu peux m'aider? Je n'arrive même pas à Lire ce qu'il ce trouve dans extra....
Avatar du membre
Voodoo
Niveau 6
Niveau 6
Messages : 298
Enregistré le : ven. 20 juil. 2007 20:45
Status : Hors ligne

Re: [...]Lire et modifier un fichier xml

#6

Message par Voodoo »

Dans _XMLDomWrapper tout est expliqué !

Voila les opérations basiques:

monxml.xml:

Code : Tout sélectionner

<?xml version="1.0" encoding="utf-8"?>
<Settings>
    <Position x="758" y="373" w="406" h="426"/>
    <Extra Detection="Yes" Records="Yes" Compression="Yes" Allow="Yes" test="no"/>
</Settings>
 
Attention: utf-16 est inutile pour notre langue. Sauf si vous avez des caractères japonnais,chinois... sinon c'est utf-8 !

Et le code:
► Afficher le texteCode
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [...] Lire et modifier un fichier xml

#7

Message par ricky »

Merci beaucoup pour le code, ça marche super bien.

Le utf-16 m'est imposé. Je dois aller lire un fichier xml qu'on me donne puis le modifier. Est-il possible de mettre en position 0 le nombre de ligne?
Avatar du membre
Voodoo
Niveau 6
Niveau 6
Messages : 298
Enregistré le : ven. 20 juil. 2007 20:45
Status : Hors ligne

Re: [...] Lire et modifier un fichier xml

#8

Message par Voodoo »

$ele[0] Ne le donne t'il pas :D ? ou alors on parle pas des mêmes lignes...
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [...] Lire et modifier un fichier xml

#9

Message par ricky »

Non, justement en 0 il y a le premier élément "Detection".
Avatar du membre
Voodoo
Niveau 6
Niveau 6
Messages : 298
Enregistré le : ven. 20 juil. 2007 20:45
Status : Hors ligne

Re: [...] Lire et modifier un fichier xml

#10

Message par Voodoo »

Donc on parle du tableau contenant les attributs...

Code : Tout sélectionner

_ArrayInsert($tab_attrib,0,ubound($tab_attrib)+1)
Voila :D
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [...] Lire et modifier un fichier xml

#11

Message par ricky »

Parfait, merci, je laisse encore le topic ouvert pour d'autres questions la semaine prochaine.

Une dernière, existe-t-il un moyen de décompiler un exe fait par auto-it et qu'on peut voir le code source?
Avatar du membre
Voodoo
Niveau 6
Niveau 6
Messages : 298
Enregistré le : ven. 20 juil. 2007 20:45
Status : Hors ligne

Re: [...] Lire et modifier un fichier xml

#12

Message par Voodoo »

Oui.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [...] Lire et modifier un fichier xml

#13

Message par Tlem »

ricky a écrit :je laisse encore le topic ouvert pour d'autres questions la semaine prochaine.
1 topic => 1 question => 1 réponse.
voir parfois
1 topic => 2 questions => 2 réponses.

mais si vous rajoutez des questions à la suite de ce topic, il va être difficile d'en retrouver l'historique parmi les nombreux messages.

Si le sujet à été résolu (ce qui semble être le cas), fermez le.
Ouvrez en un autre pour une nouvelle question.
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
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Lire et modifier un fichier xml

#14

Message par ricky »

Bonjour Tlem,

si je laisse le topic ouvert, c'est que j'ai d'autres questions mais concernant le sujet principal, c'est à dire le xml, sinon, j'aurai bien entendu ouvert un autre topic.
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Lire et modifier un fichier xml

#15

Message par ricky »

Une des valeurs dans ce fameux xml est à "No", comment puis-je faire pour tester toute la table et supprimer les valeurs qui ne sont pas égales à "Yes"?
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Lire et modifier un fichier xml

#16

Message par ricky »

Personne ne peux m'aider sur ce point là?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lire et modifier un fichier xml

#17

Message par Tlem »

Tout dépend de la structure exacte de votre fichier.
Si la structure est connue cela sera plus facile, sinon, il faudra jouer avec des boucles.

Quoi qu'il en soit, Voodoo vous à donné tous les éléments dans son exemple sur ce message : http://www.autoitscript.fr/forum/viewto ... 095#p14095
Utilisez _XMLDeleteAttr pour supprimer votre valeur après l'avoir testé.
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
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Lire et modifier un fichier xml

#18

Message par ricky »

Merci pour ton intervention.

Voilà un gros problème que j'ai. Il ce peux que j'aie ceci :

Code : Tout sélectionner

<?xml version="1.0" encoding="utf-16"?>
<Config>
  <Extra />
</Config>
Comme on peut voir ci-dessus, il ce peux que je trouve le noeud <Extra /> vide et à la lecture avec la fonction _XMLGetAllAttribIndex("/Settings/Extra",$tab_attrib,$tab_value) j'ai une magnifique erreur (Line -1: Error:Array variable subscript badly formatted). Comment tester si cette valeur est vide pour la supprimer? Je n'arrive pas à trouver, ça fait depuis lundi que je planche sur ce problème.

Merci d'avance
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lire et modifier un fichier xml

#19

Message par Tlem »

Je n'ai pas cette erreur avec ce code :

Code : Tout sélectionner

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


Global $xmlFile= @scriptdir & "/monxml.xml"
Global $ele[5]
Global $tab_attrib[20],$tab_value[20]


if Not FileExists($xmlFile) then exit msgbox(0,"Erreur",$xmlFile & " n'existe pas !")
if Not _XMLFileOpen($xmlFile) then exit msgbox(0,"Erreur",$xmlFile & " n'est pas un fichier xml")

$ele=_XMLGetChildNodes("/Config")
_ArrayDisplay($ele)

_XMLGetAllAttribIndex("/Config/Extra",$tab_attrib,$tab_value)

_Arraydisplay($tab_attrib)
_Arraydisplay($tab_value)
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é".
Répondre