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 :

Petit problème xml


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 16
    Points
    16
    Par défaut Petit problème xml
    Bonjour,

    Soit le petit fichier xml suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <pypo_config_file>
     <appname>pypo</appname>
     <version>0.1</version>
     <class>
      <activeclass>None</activeclass>
      <knownclass />
     </class>
    </pypo_config_file>
    Je veux créer un subelement dans knownclasse :
    Je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     knInstChild = m_CommonRoot.find("knownclass")
              instanceChild = ET.SubElement(knInstChild,"myname")
    ET.subElement échoue car knInstChild est « None ».
    (AttributeError: 'NoneType' object has no attribute 'makeelement')
    Pourtant, si j'itère dans le fichier xml par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for child in m_CommonRoot.iter():
    	print(child.tag, child.text)
    J'obtiens
    pypo_config_file

    appname pypo
    version 0.1
    class

    activeclass None
    knownclass None
    Je ne comprends pas pourquoi l'élément est None quand recherché avec m_CommonRoot.find("knownclass") et pas quand il est cherché avec m_CommonRoot.iter(). Il n'est pas "None" puisqu'on peut afficher son tag et son texte (qui lui est None).

    Merci de votre aide.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Vous ne mentionnez pas la bibliothèque XML que vous utilisez. En supposant que ce soit xml.etree.ElementTree, .find("knownclass") va rechercher dans les fils de la racine sans plus. Pour chercher "plus bas", il faut préciser './class/knownclass' ou '.*/knownclass' i.e. se souvenir que la structure XML est un arbre et non une chaîne de caractères et lire le paragraphe XPath support de la documentation pour voir comment formuler les éléments recherchés.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Oui, il s'agissait bien de xml.etree.ElementTree.
    Merci de votre réponse.
    Je ne connaissais pas XPath.
    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Treeview en XML petit problèmes
    Par 696969 dans le forum C#
    Réponses: 1
    Dernier message: 05/05/2012, 18h24
  2. Un petit problème avec XML/HTML vous pouvez le résoudre
    Par rmouads dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 30/03/2010, 11h04
  3. petit problême de lecture de xml
    Par Veler dans le forum VB.NET
    Réponses: 1
    Dernier message: 26/12/2007, 18h08
  4. Réponses: 6
    Dernier message: 21/07/2006, 09h18
  5. Réponses: 6
    Dernier message: 08/02/2005, 17h50

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