IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Mettre à jour un fichier xml


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    SEO
    Inscrit en
    Mai 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : SEO
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2014
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Mettre à jour un fichier xml
    Bonjour à tous,

    J'ai un fichier xml que je souhaiterai ouvrir et modifier.

    D'après quelle est la meilleure méthode ?

    Pour moi je commencerai par parser le fichier puis récupérer le contenu de la balise <content> de mon fichier. Concaténer ce contenu avec le nouveau contenu puis refermer le fichier.

    Qu'en pensez-vous et surtout quelle librairie utiliser ?

    ci-dessous mon code

    from xml.etree.ElementTree import Element, SubElement, Comment, tostring, XMLParser
    from lxml import etree
    from xml.etree import ElementTree as ET

    tree = ET.parse("example.xml")
    categorieItem = tree.getroot()

    content = categorieItem.find('item/content')
    content.text = 'test de contenu'

    tree.write("example.xml")

    print open(categorieXml).read()

    J'ai une erreur en retour :

    Traceback (most recent call last):
    File "C:\Python27\script4.py", line 142, in <module>
    content.text = 'manuel'
    AttributeError: 'NoneType' object has no attribute 'text'

    Merci pour votre aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 330
    Points : 36 849
    Points
    36 849
    Par défaut
    Salut,

    L'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Traceback (most recent call last):
      File "C:\Python27\script4.py", line 142, in <module>
        content.text = 'manuel'
    AttributeError: 'NoneType' object has no attribute 'text'
    Vous dit seulement que "content" construit par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    content = categorieItem.find('item/content')
    content.text = 'test de contenu'
    et "None". Dit autrement, le .find n'a pas trouvé ce que vous cherchiez dans le fichier/document XML.

    Pour moi je commencerai par parser le fichier puis récupérer le contenu de la balise <content> de mon fichier. Concaténer ce contenu avec le nouveau contenu puis refermer le fichier.

    Qu'en pensez-vous et surtout quelle librairie utiliser ?
    parser le fichier pour modifier le contenu de la balise content peut se réaliser avec des regexp.
    Dans ce cas, vous avez le module "re" et pas besoin de s'em... avec une librairie XML.

    Dans le cas présent, vous êtes désappointé par le message d'erreur remonté par Python.
    Si vous aviez déjà rencontré cette erreur 2/3 fois, vous ne poseriez pas la question dans un forum.
    Pourquoi ne pas passer un peu de temps dans un tuto?
    Ils vous expliquent les bases, proposent des exercices,... En essayant de les faire, vous allez rencontrer ces erreurs et apprendre à quoi elles correspondent.

    - W

  3. #3
    Futur Membre du Club
    Homme Profil pro
    SEO
    Inscrit en
    Mai 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : SEO
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2014
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    J'ai déjà lu le livre "apprendre à programmer en python" : http://python.developpez.com/cours/apprendre-python3/

    Je n'avais jamais programmé auparavant mais je sais ce que je souhaite réaliser et rien de telle que la pratique mais c'est une bonne idée d'essayer de comprendre les codes erreurs même si il y en a bcp que je comprends de plus en plus. Mais il faut bien commencer un jour ou l'autre :-)

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 330
    Points : 36 849
    Points
    36 849
    Par défaut
    C'est bien de lire. Faire les exercices, c'est mieux. Et c'est par là qu'on commence.
    Se lancer dans un petit projet comme on se jette à l'eau en espérant que maître nageur viendra vous récupérer si vous coulez est aussi une "pratique de la programmation". Mais je ne suis pas maître nageur.
    Bon courage,

    - W

Discussions similaires

  1. mettre à jour un fichier xml avec perl
    Par hasna2013 dans le forum Langage
    Réponses: 1
    Dernier message: 03/04/2013, 14h40
  2. mettre à jour un fichier xml avec ANT
    Par najemefa dans le forum XML
    Réponses: 0
    Dernier message: 22/07/2008, 16h48
  3. mettre à jour un fichier xml
    Par najemefa dans le forum ANT
    Réponses: 0
    Dernier message: 22/07/2008, 14h22
  4. [DOM] Mettre à jour un fichier XML (par URL)
    Par ensiie dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 21/01/2007, 12h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo