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

C# Discussion :

Positionnement sur un attribut d'une balise XML


Sujet :

C#

  1. #1
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut Positionnement sur un attribut d'une balise XML
    Bonjour à toutes et tous, une petite question me tarabuste.

    En effet, nous devons concevoir un XML mais nous hésitons entre 2 formes possibles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <question>
    <q1 att="C:\toto.txt"/>
    <q2 att="C:\tata.txt"/>
    </question>
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <q id="1" att="C:\toto.txt"/>
    <q id="2" att="C:\tata.txt"/>
    En effet, dans le parcours du XML, on souhaite se positionner rapidement sur la question 2 par exemple. Vu nos maigres connaissances en XML sur C#, on se demandait s'il existait une méthode pour se positionner simplement sur une balise dont l'attribut vaut 2 par exemple dans notre cas.

    De cette possibilité dépend le choix du format du XML.

    Merci d'avance pour vos avis, aides.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 97
    Points : 115
    Points
    115
    Par défaut
    La bonne solution est la seconde, car elle te permet de traiter les questions de manière générique. La balise indique le type de l'élément, sa structure. Autrement dit, tu vois une balise "q", tu sais que c'est une question et que tu as derrière un id et un attribut "att".
    Ce sens est complètement perdu avec la première solution : si demain tu as une balise "query" tu vas faire comment ? Tu vas devoir commencer à gérer des cas tordus du genre "si ça commence par un q et que c'est suivi par un nombre, c'est une question, sinon...".

  3. #3
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Bonjour Kookiz et merci pour ta réponse rapide. En effet, pour un problème de généricité on ne peut opter que pour la seconde solution.

    De plus, on va essayer de passer par du XPath pour se positionner convenablement, encore merci

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 97
    Points : 115
    Points
    115
    Par défaut
    XPath est un très bon choix. Sinon tu peux aussi lorgner du côté de Linq to XML

  5. #5
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Merci de la précision

  6. #6
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Je pense que linq to xml est un peu plus simple. Voila une requete pour recupérer le chemin en fonction de l'id de la question.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XDocument.Load("test.xml").Descendants("q").Where(elt => elt.Attribute("id").Value == "1").First().Attribute("att").Value

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    Points : 122
    Points
    122
    Par défaut
    Perso, je trouve Xpath plus simple => /questions/q[@id=2]/@attr

    Edit : niveau perfs j'avoue que je ne sais pas. Il faudrait mesurer sans compiler puis en compilant les expressions. Si quelqu'un s'amuse à ça je suis intéressé d'avoir les chiffres, merci d'avance.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 97
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par realpasso Voir le message
    Perso, je trouve Xpath plus simple => /questions/q[@id=2]/@attr

    Edit : niveau perfs j'avoue que je ne sais pas. Il faudrait mesurer sans compiler puis en compilant les expressions. Si quelqu'un s'amuse à ça je suis intéressé d'avoir les chiffres, merci d'avance.
    La plupart des benchmarks montrent que Linq to XML est plus rapide que XPath. Mais la plupart des tests que j'ai pu voir ont été fait avec des fichiers XML très petits, je serais pas surpris que XPath devienne plus efficace sur des fichiers de taille plus conséquente.

  9. #9
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Voici une comparaison entre linq to xml, xmldocument et xmlreader
    http://www.nearinfinity.com/blogs/jo...to_sql_vs.html

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

Discussions similaires

  1. [WD16] Afficher les attributs d'une balise XML
    Par bombseb dans le forum WinDev
    Réponses: 8
    Dernier message: 01/03/2012, 15h43
  2. Recuperer les attributs d'une balise XML
    Par chwal dans le forum Langage
    Réponses: 2
    Dernier message: 21/08/2010, 14h40
  3. Affichage des attributs d'une balise XML
    Par derfez dans le forum Linq
    Réponses: 4
    Dernier message: 07/07/2010, 14h06
  4. Réponses: 2
    Dernier message: 17/04/2008, 12h30
  5. [JDOM] données un attribut à une balise xml
    Par noobiewan kenobi dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 09/07/2004, 15h54

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