Partage
  • Partager sur Facebook
  • Partager sur Twitter

XML dom write file

Sujet résolu
    18 mai 2011 à 22:33:12

    Bonjour,

    Je créé et remplie un document xml comme cela ne faite pas attention au settingXml c un fichier de conf :

    from xml.dom.minidom import parse, Document
    
    def __init__(self):
            self.__currentNode = None
            self.__urlsList = None
            self.__doc = None
            
            self.__doc = Document()
            
    # Ecriture des noeuds Url
        def setUrls(self, urlsList):
            
            self.__createXml()
            
            if self.__urlsList != None:
                return 
            
            urls = self.__doc.createElement(self.settingXml.noeudRoot)
            self.__doc.appendChild(urls)
            
            for urlCur in urlsList:
                url = self.__doc.createElement(self.settingXml.noeud)
                url.setAttribute(self.settingXml.url, urlCur.getUrl())
                url.setAttribute(self.settingXml.nbVisite, urlCur.getNbVisite())
                url.setAttribute(self.settingXml.date, urlCur.getDateTime())
                url.setAttribute(self.settingXml.title, urlCur.getTitle())
                urls.appendChild(url)
            
            self.writeFichier()
                
        def writeFichier(self):
            try:
                f= open(self.settingXml.path, 'w') 
                self.__doc.writexml(f, indent = "", addindent = "  ", newl = "\n", encoding = "UTF-8") 
            except Exception, err:
                print 'l''écriture dans le fichier xml à échoué :\n Erreur détecte :\n%s' % err 
            finally:
                f.close()
    


    Le problème est le suivant je créer bien un fichier xml mais avec uniquement :
    <?xml version="1.0" encoding="UTF-8"?>
    <urls>
      <url date="
    


    Il me créé lors de l'execution une exception au niveau du writexml :
    lécriture dans le fichier xml à échoué :
     Erreur détecte :
    'NoneType' object has no attribute 'replace'
    


    Merci de m'aider à résoudre ce problème
    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2011 à 22:55:35

      Bonsoir,

      Dans l'idéal il faudrait que tu nous donnes un code qu'on puisse exécuter nous-même. De cette façon on a l'erreur sous les yeux, quelques tests et hop' c'est réglé. Alors que là, de tête, faut retracer l'exécution.. pff je laisse mon tour moi :-° (et je me demande si d'autres contributeurs potentiels n'ont pas fait de même )

      Dans tout les cas, il nous manque du code : on n'a même pas la ligne concernée puisqu'il n'y a aucun replace dans ce que tu as posté.
      edit : quoi que.. bon dans tous les cas ça serait bien de pouvoir tester.
      • Partager sur Facebook
      • Partager sur Twitter
        18 mai 2011 à 23:16:12

        Alors j'aimerais savoir si la syntaxe de la fonction writeFichier est correcte ?

        A prori oui vu que j'écris un bout d'xml ça voudrait dire que j'ai un problème avec la construction de mes attributs non ?

        J'ai corrigé l'erreur j'avais un int mais maintenant j'ai une autre erreur :
        UnicodeEncodeError: 'latin-1' codec can't encode character u'\u20ac' in position 30: ordinal not in range(256)

        Et je peux plus ouvrir le fichier xml il me dit l'encodage est incorrecte.

        Alors savez vous ce qu'attends la fonction setAttribute() comme type de var ?
        • Partager sur Facebook
        • Partager sur Twitter
          19 mai 2011 à 21:45:11

          Citation : dseed

          UnicodeEncodeError: 'latin-1' codec can't encode character u'\u20ac' in position 30: ordinal not in range(256)



          Et avec l'argument encoding de open() ?

          f = open(self.settingXml.path, 'w', encoding='UTF-8')
          


          Citation : dseed

          Et je peux plus ouvrir le fichier xml il me dit l'encodage est incorrecte.


          Qui c'est « il » ?

          Citation :

          Alors savez vous ce qu'attends la fonction setAttribute() comme type de var ?


          ha mais... où est-ce qu'elle apparait cette erreur d'encodage ?

          * regrette toujours qu'on ne puisse pas tester le code *
          • Partager sur Facebook
          • Partager sur Twitter
            19 mai 2011 à 23:46:55

            En faite il fallait enlever encoding en utf8 au niveau du write dans l'xml ...
            • Partager sur Facebook
            • Partager sur Twitter

            XML dom write file

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown