OVH Cloud OVH Cloud

Comment modifier un element d'un fichier xml ?

16 réponses
Avatar
David Josty
J'ai besoin de modifier un fichier xml comme celui-ci.
Il faudrait remplacer :

toto par Martin.

Quelle est la facon la plus simple, de faire ceci (je vous avoue je suis un
peu perdu)


fichier d'origine

<?xml version="1.0" encoding="iso-8859-1"?>
<Job type="section">
<nom type="string">toto</nom>
<prenom type="string">titi</prenom>
</Job>


---------------------------------------------------------
fichier transformé apres traitement

<?xml version="1.0" encoding="iso-8859-1"?>
<Job type="section">
<nom type="string">Martin</nom>
<prenom type="string">titi</prenom>
</Job>

merci beaucoup

10 réponses

1 2
Avatar
SL
David Josty wrote:
J'ai besoin de modifier un fichier xml comme celui-ci.
Il faudrait remplacer :

toto par Martin.

Quelle est la facon la plus simple, de faire ceci (je vous avoue je suis un
peu perdu)


fichier d'origine

<?xml version="1.0" encoding="iso-8859-1"?>
<Job type="section">
<nom type="string">toto</nom>
<prenom type="string">titi</prenom>
</Job>


---------------------------------------------------------
fichier transformé apres traitement

<?xml version="1.0" encoding="iso-8859-1"?>
<Job type="section">
<nom type="string">Martin</nom>
<prenom type="string">titi</prenom>
</Job>

merci beaucoup




avec un (bete) string.replace ca ira.
tu charge le fichier XML dans une string, puis tu remplace toto par
Martin , et enfin tu ecris le resultat dans un fichier...

mais tu passe completement a cote d'XML... d'ailleur ce ne serait pas du
XML que ca changerait rien.

remarque :
si tu dois remplacer uniquement les toto qui sont dans un noeud 'nom'
lui meme fils d'un noeud 'job'.... il faut utiliser un parseur XML.

Avatar
David Josty
Merci !!!!
Effectivement, pourkoi faire complique quand on peut faire simple !!!

Merci 1000 *


"SL" a écrit dans le message de
news:42543c82$0$25054$
David Josty wrote:
J'ai besoin de modifier un fichier xml comme celui-ci.
Il faudrait remplacer :

toto par Martin.

Quelle est la facon la plus simple, de faire ceci (je vous avoue je suis
un


peu perdu)


fichier d'origine

<?xml version="1.0" encoding="iso-8859-1"?>
<Job type="section">
<nom type="string">toto</nom>
<prenom type="string">titi</prenom>
</Job>


---------------------------------------------------------
fichier transformé apres traitement

<?xml version="1.0" encoding="iso-8859-1"?>
<Job type="section">
<nom type="string">Martin</nom>
<prenom type="string">titi</prenom>
</Job>

merci beaucoup




avec un (bete) string.replace ca ira.
tu charge le fichier XML dans une string, puis tu remplace toto par
Martin , et enfin tu ecris le resultat dans un fichier...

mais tu passe completement a cote d'XML... d'ailleur ce ne serait pas du
XML que ca changerait rien.

remarque :
si tu dois remplacer uniquement les toto qui sont dans un noeud 'nom'
lui meme fils d'un noeud 'job'.... il faut utiliser un parseur XML.



Avatar
Eric Deveaud
SL wrote:
David Josty wrote:
J'ai besoin de modifier un fichier xml comme celui-ci.
Il faudrait remplacer :

toto par Martin.

Quelle est la facon la plus simple, de faire ceci (je vous avoue je suis un
peu perdu)


avec un (bete) string.replace ca ira.
tu charge le fichier XML dans une string, puis tu remplace toto par
Martin , et enfin tu ecris le resultat dans un fichier...



arg.....
NON NON on ne charge pas un fichier complet dans une string.
au pire tu le lis ligne par ligne.
tu traite chaque ligne et tu les ré-écrits dans le fichier destination


Eric

--
JP: ET à quand un Quicktime for Unix ?.. :-(((
SP: Pour coloriser les lignes de commande ??!
-+- SP in Guide du Macounet Pervers : Unixian Graffiti -+-


Avatar
Encolpe DEGOUTE
Dans fr.comp.lang.python, David Josty écrivit:
J'ai besoin de modifier un fichier xml comme celui-ci.
Il faudrait remplacer :

toto par Martin.

Quelle est la facon la plus simple, de faire ceci (je vous avoue je suis un
peu perdu)


fichier d'origine

<?xml version="1.0" encoding="iso-8859-1"?>
<Job type="section">
<nom type="string">toto</nom>
<prenom type="string">titi</prenom>
</Job>


---------------------------------------------------------
fichier transformé apres traitement

<?xml version="1.0" encoding="iso-8859-1"?>
<Job type="section">
<nom type="string">Martin</nom>
<prenom type="string">titi</prenom>
</Job>


Je vous conseille d'utiliser le module python cElementTree qui est très
simple d'utilisation et très rapide.
Et non, il ne faut jamais utiliser le module string pour modifier un
fichier XML.

--
Encolpe DEGOUTE
http://encolpe.degoute.free.fr/
Logiciels libres, hockey sur glace et autres activités cérébrales

Avatar
yves
On Wed, 6 Apr 2005 21:13:53 +0200, "David Josty"
wrote:

Bonjour,

Quelle est la facon la plus simple, de faire ceci (je vous avoue je suis un
peu perdu)


Peut-être ni simple, ni propre, mais ceci marche:

##############################
from xml.dom import minidom
xmldoc = minidom.parse('f_orig')

s = xmldoc.getElementsByTagName('nom')
s[0].firstChild.replaceWholeText('Martin')

of = file('f_transf','w')
of.write( xmldoc.toxml('iso-8859-1'))
of.close()
###################################

--
Yves

Avatar
David Josty
"Eric Deveaud" a écrit dans le message de
news:
SL wrote:
David Josty wrote:
J'ai besoin de modifier un fichier xml comme celui-ci.
Il faudrait remplacer :

toto par Martin.

Quelle est la facon la plus simple, de faire ceci (je vous avoue je
suis un



peu perdu)


avec un (bete) string.replace ca ira.
tu charge le fichier XML dans une string, puis tu remplace toto par
Martin , et enfin tu ecris le resultat dans un fichier...



arg.....
NON NON on ne charge pas un fichier complet dans une string.
au pire tu le lis ligne par ligne.
tu traite chaque ligne et tu les ré-écrits dans le fichier destination


Bonjour,

C'est pourtant ce que j'ai fait... Desolé
Mais mon fichier est tout petit, il ne fait qu'une centaine de ligne !
Pourquoi est ce si important ?
merci





Eric

--
JP: ET à quand un Quicktime for Unix ?.. :-(((
SP: Pour coloriser les lignes de commande ??!
-+- SP in Guide du Macounet Pervers : Unixian Graffiti -+-




Avatar
David Josty
"Encolpe DEGOUTE" a écrit dans le message de
news:
Dans fr.comp.lang.python, David Josty écrivit:
J'ai besoin de modifier un fichier xml comme celui-ci.
Il faudrait remplacer :

toto par Martin.

Quelle est la facon la plus simple, de faire ceci (je vous avoue je suis
un


peu perdu)


fichier d'origine

<?xml version="1.0" encoding="iso-8859-1"?>
<Job type="section">
<nom type="string">toto</nom>
<prenom type="string">titi</prenom>
</Job>


---------------------------------------------------------
fichier transformé apres traitement

<?xml version="1.0" encoding="iso-8859-1"?>
<Job type="section">
<nom type="string">Martin</nom>
<prenom type="string">titi</prenom>
</Job>


Je vous conseille d'utiliser le module python cElementTree qui est très
simple d'utilisation et très rapide.
Et non, il ne faut jamais utiliser le module string pour modifier un
fichier XML.


Mais pourquoi "ne jamais utiliser le module string. Dans mon cas, je ne fais
que 2 petite modif
et sa fonctionne 5/5.
Quel est l'avantage a utiliser un parseur dans mon cas ?

Merci


--
Encolpe DEGOUTE
http://encolpe.degoute.free.fr/
Logiciels libres, hockey sur glace et autres activités cérébrales



Avatar
David Josty
"Yves" a écrit dans le message de
news:
On Wed, 6 Apr 2005 21:13:53 +0200, "David Josty"
wrote:

Bonjour,

Quelle est la facon la plus simple, de faire ceci (je vous avoue je suis
un


peu perdu)


Peut-être ni simple, ni propre, mais ceci marche:

##############################
from xml.dom import minidom
xmldoc = minidom.parse('f_orig')

s = xmldoc.getElementsByTagName('nom')
s[0].firstChild.replaceWholeText('Martin')

of = file('f_transf','w')
of.write( xmldoc.toxml('iso-8859-1'))
of.close()
###################################


Merci !!!



--
Yves



Avatar
Do Re Mi chel La Si Do
Bonsoir !


Un problème pouvant découler de l'utilisation des strings : XML utilise
Unicode. Si jamais le fichier a un encodage particulier, il n'est pas sûr
que le module string s'en sorte (exemple : UTF-16). Sauf à décoder en
lecture, puis encoder à l'écriture.

A noter que les expressions régulières, de Python, gérant Unicode, on peut
les utiliser pour contourner ce petit problème.


Sinon, passer par un parseur XML, c'est beaucoup plus mieux frime...


@-salutations
--
Michel Claveau
Avatar
Eric Deveaud
David Josty wrote:

"Eric Deveaud" a écrit

arg.....
NON NON on ne charge pas un fichier complet dans une string.
au pire tu le lis ligne par ligne.
tu traite chaque ligne et tu les ré-écrits dans le fichier destination


Bonjour,

C'est pourtant ce que j'ai fait... Desolé
Mais mon fichier est tout petit, il ne fait qu'une centaine de ligne !
Pourquoi est ce si important ?



comme tu le mentionnes ton fichier est tout petit, mais quid auand tu va
vouloir utiliser le même code sur un fichier enÔÔÔrme ??? tu sera obligé
de revoir ton approche.
avec un peu de prévoyance, tu fais en sorte que ton code tourne sur un
petit fichier ou sur un gros fichier.

surtout pour ce genre de traitement qui est clairement séquentiel.

sauf a avoir un besoin spécifique de l'ntégralité du contenu d'un
fichier (et encore on peut tourner autour du problème) charger
l'intégralité d'un fichier dans un objet quelconque me semble aberrant.

Eric

--
Le problème c'est que NEXTSTEP sans le framework objet, c'est comme une
tarte aux pommes sans les pommes.
-+- Ol. in Guide du Macounet Pervers : Y'a pas de la Pomme dedans ?-+-


1 2