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 :

Gérer un fichier XML avec Python


Sujet :

Python

  1. #21
    Membre habitué Avatar de KINENVEU
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 184
    Points : 131
    Points
    131
    Par défaut
    ffets, je crois que tu dois un cafe a pierjean, il t'a fait tout le travail.

  2. #22
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 22
    Points : 8
    Points
    8
    Par défaut Bonjour à tous
    Merci pour les réponses. Merci pierjean pour l'exemple.
    Malheureusement, j'ai codé l'algorithme de la fonction principale de recherche de texte dans mon programme et donc je n'ai pas trop le temps de tout repenser pour modifier cette fonction.

    Je regarderai ton code à titre de culture générale quand même car j'n'ai pas eu les capacités pour le faire donc apprendre c'est toujours bon.

    Pour ma part j'ai tout fait avec des fonctions de traitement de texte.

    Mille mercis en tout cas.

    Bonne journée à tous.

    @++

    ffets

  3. #23
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Bonjour a tous,

    J'ai suivi ce post avec beaucoup d'interet car je suis aussi en train de manipuler de l'XML (provenant de word) pour rajouter des infos.
    J'ai utilisé ElementTree comme parseur et je le trouve tres bien.
    J'arrive donc à parser mon fichier d'entrée mais lorsque je rajoute des noeuds, je n'arrive pas à ecrire l'arbre dans mon fichier de sortie !

    Est ce que quelqu'un à une idée ?

    Merci.

    PS: voila mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    from xml.etree.ElementTree import (Element, parse, SubElement, dump, ElementTree, tostring)
     
        inputFileName = "toto.xml"
        outDir = "./"
        outputFileName = "totoout.xml"
     
        # PARSING
        tree = parse(inputFileName)
        root = tree.getroot()
     
        # PROCESSING
        element_to_add = Element("wx:sub-section")
     
        for node in root:
            if node.tag == "{http://schemas.microsoft.com/office/word/2003/wordml}body":
                bodyNode = node
                childrenList = bodyNode.getchildren()
                el = SubElement(childrenList[len(childrenList)-1], element_to_add)
     
        # OUTPUT WRITTING
        # write output file
        file = open(os.path.join (outDir, outputFileName), "w")
        tree.write(file)
        file.close()
    et l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     File "./apa//apa.py", line 156, in <module>
        main ()
      File "./apa//apa.py", line 133, in main
        tree.write(file)
      File "C:\Program Files\Python25\lib\xml\etree\ElementTree.py", line 663, in write
        self._write(file, self._root, encoding, {})
      File "C:\Program Files\Python25\lib\xml\etree\ElementTree.py", line 707, in _write
        self._write(file, n, encoding, namespaces)
      File "C:\Program Files\Python25\lib\xml\etree\ElementTree.py", line 707, in _write
        self._write(file, n, encoding, namespaces)
      File "C:\Program Files\Python25\lib\xml\etree\ElementTree.py", line 707, in _write
        self._write(file, n, encoding, namespaces)
      File "C:\Program Files\Python25\lib\xml\etree\ElementTree.py", line 681, in _write
        file.write("<" + _encode(tag, encoding))
    TypeError: cannot concatenate 'str' and 'instance' objects

  4. #24
    Membre averti
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mai 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 290
    Points : 388
    Points
    388
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: cannot concatenate 'str' and 'instance' objects
    element_to_add doit etre une chaine, et non un objet Element.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    el = SubElement(childrenList[len(childrenList)-1],"wx:sub-section" )
    ou bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    childrenList[len(childrenList)-1].append(element_to_add)

  5. #25
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Merci pierjean.
    Cela marche beaucoup mieux comme ca.

  6. #26
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Bonjour à tous !

    Je suis bloqué avec mon parser xml ElementTree.
    Je veux rajouter un noeud dans mon xml provenant de word (wordml).
    Je construit donc ce nouveau noeud avec xslt qui me donne un beau fichier avec la syntaxe wordml et la, pas de soucis.
    <ns2:sub-section>
    <ns0:p/>...
    </ns2:sub-section>
    Ensuite je parse ce noeud avec elementTree:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xmlEl = parse("mon_fichier_provenant_de_xslt")
    refRoot = xmlEl.getroot()
    et quand je rajoute ce noeud dans mon arbre xmlword:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chapSect.append(refRoot)
    le noeud est bien rajouté mais il me remplace le <ns2:sub-section> en <ns0:sub-section> comme si le parser python voulais reprendre l'index à 0.

    Est ce que quelqu'un connait cette erreur ?

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Traitement basique sur fichier xml avec python
    Par raphael75015 dans le forum Général Python
    Réponses: 11
    Dernier message: 22/05/2014, 15h44
  2. Lecture dun fichier xml avec python
    Par merlinerick dans le forum Interfaçage autre langage
    Réponses: 6
    Dernier message: 29/07/2009, 13h49
  3. pickler un fichier XML avec python
    Par Gldev_comp dans le forum Général Python
    Réponses: 1
    Dernier message: 10/07/2008, 05h31
  4. Lire un fichier XML avec Python
    Par eyquem dans le forum Général Python
    Réponses: 2
    Dernier message: 19/12/2007, 13h54
  5. Python probleme pour traitement fichier Xml avec l'API dom
    Par chenimitz dans le forum Général Python
    Réponses: 11
    Dernier message: 30/10/2007, 19h34

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