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

ASP.NET Discussion :

Afficher données xml dans une liste


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 4
    Par défaut Afficher données xml dans une liste
    Bonjour,

    Débutant en ASP et en C#, on m'a chargé de développer une application web afin d'afficher les données d'un fichier xml. Je n'arrive en suivant les tutoriels qu'à afficher certaines données du fichier. L'objectif étant d'afficher tous les "attributs"/"noeuds"? quelque ils soient avec leur valeur dans une liste/gridview ? sachant que les fichiers xml peuvent et ont souvent une structure différentes.

    Quelqu'un pourrai m'apporter son aide ?

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2009
    Messages : 133
    Par défaut
    Bonjour,
    Si tu ne connais pas la structure de ton fichier, cela ne va pas être facile, mais ça reste faisable. Dans ce cas tu créés une méthode récursive qui va explorer la structure et injecter le résultat dans un TreeView.
    Dans tous les cas utilise les méthodes de l'espace System.Xml.Linq.
    Poste un bout de code et un morceau d'un fichier.xml et je te guiderai vers la solution.
    nachtigal!!

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 4
    Par défaut
    Bonjour,

    Voici un extrait de mon code xml :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <ns1:Header sessionId="0005977" date="10/07/2012 09:47:11" sender="OM Fr" />
      <ns1:DU fid="20120710-00006C850007127" multiLab="false" isFirst="true" compressedDUFid="1JW7A00006C850007127" category="DEV" legacyDeliveryNumber="7525119">
        <ns1:CommonData>
          <Customer code="7522008" customerType="030" customerName="" customerAddress="112/114 RUE DE RIVOLI" customercitycode="75001" customercityname="PARIS" customerPhone="7522008" CustomerCountry="FR" />
          <ExpectedDelivery date="2012-07-15T00:00:00" />
          <OrderTaking date="2012-07-10T09:46:43.730" agencyCode="" />
          <ExpectedEndOfFabrication date="2012-07-10T20:22:02.320" />
          <Comment>
            <BothLens registrationComment="" />
            <RightLens customerReference="UC02_CFM" commercialComment="" fulfillmentComment="" />
            <LeftLens customerReference="UC02_CFM" commercialComment="" fulfillmentComment="" />
          </Comment>

    Merci de ton aide

  4. #4
    Invité
    Invité(e)
    Par défaut
    Avec Linq To XML, cela reste possible mais vu que les structures XML sont différentes alors il faudra avoir une requête par type.

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 4
    Par défaut
    Bonjour, je relance parce que je n'ai toujours pas de solution même si j'ai un peu avancé :s

    Alors voilà où j'en suis :

    je voudrais développer une application web via ASP.NET permettant de lire un fichier xml, je m'explique.

    Cette application devra pouvoir afficher dans un tableau (gridview je crois, c'est la premier fois que je tente quelque chose en ASP.NET et même en C# :p) tous les attributs (balises) et la valeur associée d'un fichier xml passé en paramètre et ce, quelque soit la structure du fichier (je ne connais pas l’arborescence du fichier ni le nom des attributs ni leur nombre).

    Voici un extrait d'un fichier xml :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?xml version="1.0" encoding="utf-8"?>
    <ns1:OXML msgId="OPEN_CONTRACT" xmlns:ns1="http://meex.OM.OXML">
    <ns1:Header sessionId="0005977" date="10/07/2012 09:47:11" sender="OM Fr" />
    <ns1:DU fid="20120710-00006C850007127" multiLab="false" isFirst="true" compressedDUFid="1JW7A00006C850007127" category="DEV" legacyDeliveryNumber="7525119">
    <ns1:CommonData>
    <Customer code="7522008" customerType="030" customerName="" customerAddress="112/114 RUE DE RIVOLI" customercitycode="75001" customercityname="PARIS" customerPhone="7522008" CustomerCountry="FR" />
    <ExpectedDelivery date="2012-07-15T00:00:00" />
    <OrderTaking date="2012-07-10T09:46:43.730" agencyCode="" />
    <ExpectedEndOfFabrication date="2012-07-10T20:22:02.320" />
    <Comment>
    <BothLens registrationComment="" />
    <RightLens customerReference="UC02_CFM" commercialComment="" fulfillmentComment="" />
    <LeftLens customerReference="UC02_CFM" commercialComment="" fulfillmentComment="" />
    </Comment>
    </ns1:CommonData>

    Et voici 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    using System.Xml;
    using System.Collections;
     
    public partial class _Default : System.Web.UI.Page 
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    ArrayList list = new ArrayList();
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(@"D:\Documents and Settings\benadjer\My Documents\Visual Studio 2005\Projects\WebSite1\7525119.xml");
    ParseXml(xmlDoc.DocumentElement, list);
     
    }
    private void ParseXml(XmlNode xmlNode, ArrayList list)
    {
     
     
    foreach (XmlAttribute xmlAttribute in xmlNode.Attributes)
    {
     
    list.Add(xmlAttribute.Name + " = " + xmlAttribute.Value);
    }
     
    foreach (XmlNode childNode in xmlNode.ChildNodes)
    {
    this.ParseXml(childNode, list);
    }
     
    GridView1.DataSource = list;
    GridView1.DataBind();
     
    }
    }
    Avec ce code j'ai le message d'erreur suivant :

    La référence d'objet n'est pas définie à une instance d'un objet.
    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.

    Erreur source:


    Ligne 25 :
    Ligne 26 :
    Ligne 27 : foreach (XmlAttribute xmlAttribute in xmlNode.Attributes)
    Ligne 28 : {
    Ligne 29 :
    Et lorsque je retire cette partie du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach (XmlNode childNode in xmlNode.ChildNodes)
    {
    this.ParseXml(childNode, list);
    }
    je ne réussi à afficher dans le gridview que cette partie (la première) :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <ns1:OXML msgId="OPEN_CONTRACT" xmlns:ns1="http://meex.OM.OXML">

    Je ne vois pas pourquoi cela bloque.

    Merci d'avoir pris le temps de lire tout cela et merci pour votre aide.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2009
    Messages : 133
    Par défaut
    reBonjour,
    Tout d'abord quelques remarques :
    - Si tu ne connais pas le format de ton fichier.xml et si de plus ce format peut varier d'un fichier à l'autre, alors pas évident de s'y retrouver... En somme tu dois écrire un parseur XML...
    - Moi j'ai utilisé un TreeView pour cette raison que tu peux emboîter tes noeuds, et faire ressortir ta structure ; voyais pas trop l'intérêt d'une liste, m'enfin ce n'est qu'un avis !!
    - J'ai utilisé LinqToXml car il t'offre plein de possibilité, mais nous y reviendrons si tu y vois un intérêt

    1) un WebSite tout simple
    2) tu mets ton fichier.xml dans le dossier App_Data, c'est une bonne pratique...
    3) tu mets un TreeView dans ta page et dans le codebehind tu mets ceci
    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
    25
    26
     
    //ne pas oublier la directive
    using System.Xml.Linq;
     
    string s = HttpContext.Current.Server.MapPath("~/App_Data/XMLFile1.xml");
     
            var query = from p in XElement.Load(s).Descendants() select p;
     
            foreach (var node in query)
            {
                TreeNode tn = new TreeNode(node.Name.ToString());
                TreeView1.Nodes.Add(tn); 
     
                //ajoutons les attributs
                if (node.HasAttributes)
                {
                    //on ajoute les attributs en boucles
                    foreach (var attr in node.Attributes().ToList())
                    {
                        TreeNode n1 = new TreeNode(attr.Name.ToString() + " = " + attr.Value.ToString());
                        tn.ChildNodes.Add(n1);
                    }
                }
            }
     
            TreeView1.DataBind();
    Bon, tu peux faire une procédure récursive pour emboîter les noeuds...
    Tu peux utilement consulter ce lien 1 également !
    nachtigal !

Discussions similaires

  1. Afficher des données importées dans une list box
    Par accessbeginner dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 11/06/2015, 15h51
  2. Réponses: 2
    Dernier message: 30/03/2011, 15h33
  3. [ XML ][ XSL ][ JSP ] afficher du xml dans une JSP
    Par zozolh2 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 17/07/2009, 20h34
  4. Afficher du XML dans une page HTML
    Par MrMaze dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/12/2005, 16h50
  5. problème xsl : inclure une donnée xml dans une balise html
    Par djodjo dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/01/2003, 09h24

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