Page 1 sur 1

[..] Lire et modifier un fichier xml

Posté : ven. 06 févr. 2009 10:13
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

Re: Lire et modifier un fichier xml

Posté : ven. 06 févr. 2009 13:52
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

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

Posté : ven. 06 févr. 2009 14:24
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...

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

Posté : ven. 06 févr. 2009 15:20
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

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

Posté : ven. 06 févr. 2009 15:31
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....

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

Posté : ven. 06 févr. 2009 16:07
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

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

Posté : ven. 06 févr. 2009 16:17
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?

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

Posté : ven. 06 févr. 2009 16:25
par Voodoo
$ele[0] Ne le donne t'il pas :D ? ou alors on parle pas des mêmes lignes...

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

Posté : ven. 06 févr. 2009 16:27
par ricky
Non, justement en 0 il y a le premier élément "Detection".

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

Posté : ven. 06 févr. 2009 16:41
par Voodoo
Donc on parle du tableau contenant les attributs...

Code : Tout sélectionner

_ArrayInsert($tab_attrib,0,ubound($tab_attrib)+1)
Voila :D

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

Posté : ven. 06 févr. 2009 16:46
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?

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

Posté : ven. 06 févr. 2009 17:01
par Voodoo
Oui.

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

Posté : ven. 06 févr. 2009 20:58
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.

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

Posté : lun. 09 févr. 2009 08:35
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.

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

Posté : lun. 09 févr. 2009 10:49
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"?

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

Posté : mar. 10 févr. 2009 15:25
par ricky
Personne ne peux m'aider sur ce point là?

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

Posté : mar. 10 févr. 2009 22:54
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é.

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

Posté : mer. 11 févr. 2009 14:20
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

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

Posté : mer. 11 févr. 2009 21:02
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)