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

 .NET Discussion :

Problème référence d'objet [C#]


Sujet :

.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 78
    Par défaut Problème référence d'objet
    Bonjour j'ai un petit souci dans mon code qui parcours un xml et récupère des attributs

    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
    static void Main(string[] args)
            {
                var pathdoc1= 
                    "C:/doc1.xml";
     
                XmlDocument doc1= new XmlDocument();
     
                try
                {
                    doc1.Load(pathdoc1);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Erreur");
                }
     
                XmlNodeList myChildNode = doc1.GetElementsByTagName("iec:Term");
                foreach (XmlNode node in myChildNode)
                {
                    //Console.WriteLine("Attributs : name={0} descID={1}", unNode.Attributes["name"].InnerText, unNode.Attributes["descID"].InnerText);
                    if (node.Attributes != null)
                    {
                        Console.WriteLine(node.Attributes["name"].InnerText + " " + node.Attributes["descID"].InnerText);
                    }
                }
     
     
            }
    Au niveau du :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.WriteLine(node.Attributes["name"].InnerText + " " + node.Attributes["descID"].InnerText);
    j'ai l'erreur suivante : "La référence d'objet n'est pas définie à une instance d'un objet."

    Je ne comprend pas bien, aucun de mes attributs est null pourtant. Si vous avez quelques indications à me fournir je suis preneur.

    Merci d'avance pour votre aide.





    edit : en fait c'est mon "node.Attributes["descID"].InnerText" qui est vide à un moment dans mon fichier xml.

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Un de tes 2 attributs (name ou descID) sinon les 2 peuvent être null et donc le .innerText plante.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 78
    Par défaut
    Pour tenter de résoudre ce problème j'ai voulu créer un string est vérifier si il n'est pas null, de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        XmlNodeList myChildNode = iecAbbreviation.GetElementsByTagName("iec:Term");
                foreach (XmlNode node in myChildNode)
                {
                    string name = node.Attributes["name"].InnerText;
                    string descID = node.Attributes["descID"].InnerText;
     
                    if (name.Length != 0 && descID.Length != 0)
                    {
     
                        Console.WriteLine("name = " + name + "    " + "descID =" + descID); 
                    }
                }
                Console.ReadLine();
    Mais ça ne marche pas. Ce qui me parait logique vu que l'erreur intervient avant le if. Quelqu'un aurait-il une idée ?

    Merci.

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2013
    Messages : 10
    Par défaut
    Citation Envoyé par Jarell Voir le message
    Pour tenter de résoudre ce problème j'ai voulu créer un string est vérifier si il n'est pas null, de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        XmlNodeList myChildNode = iecAbbreviation.GetElementsByTagName("iec:Term");
                foreach (XmlNode node in myChildNode)
                {
                    string name = node.Attributes["name"].InnerText;
                    string descID = node.Attributes["descID"].InnerText;
     
                    if (name.Length != 0 && descID.Length != 0)
                    {
     
                        Console.WriteLine("name = " + name + "    " + "descID =" + descID); 
                    }
                }
                Console.ReadLine();
    Mais ça ne marche pas. Ce qui me parait logique vu que l'erreur intervient avant le if. Quelqu'un aurait-il une idée ?

    Merci.
    Test si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    node.Attributes["name"]
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    node.Attributes["descID"]
    est non null avant d'essayer de récupérer la propriété InnerText...

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 78
    Par défaut
    C'est ce que j’étais en train de faire mais j'oublié de mettre le ["name"] et ["descID"]...

    Merci pour votre aide.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 78
    Par défaut
    Je me permet de revenir vers vous car je rencontre un autre problème. J'aimerai au delà d'un node spécifique parser une partie d'une ligne.

    Par exemple j'ai cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <iec:Doc id="5668"><![CDATA[<p>blablabla</p>]]></iec:Doc>
    Et j'aimerai récupérer uniquement le "blablabla".

    Pour le id pas de problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    XmlNodeList descChildNode = docXML.GetElementsByTagName("iec:Doc")
    foreach (XmlNode descNode in descChildNode)
                {
                    if (descNode.Attributes["id"] != null)
                    {
                        string id = descNode.SelectSingleNode("id").Value;
                        Console.WriteLine("id = " + id);
                    }
                }
    Mais pour récuperer juste le CDATA ça ne fonctionne pas. J'ai essayé quelques solutions comme passer par une lecture du doc xml avec un xpath navigator mais au final j'ai rencontré plus de problème... j'ai même essayer de faire par regex aussi mais pareil trop compliqué. Je cherche une façon plus simple.

    Merci d'avance encore une fois pour vos conseils et aide.

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

Discussions similaires

  1. [Débutant] problème référence d'objet est requise pour NavigationService
    Par Veidt dans le forum Windows Phone
    Réponses: 2
    Dernier message: 11/08/2012, 00h13
  2. [Débutant] Problème de référence d'objet
    Par Romain0 dans le forum VB.NET
    Réponses: 7
    Dernier message: 27/01/2012, 10h15
  3. [FLASH MX] Problème avec l'objet Date
    Par n_tony dans le forum Flash
    Réponses: 13
    Dernier message: 22/03/2005, 13h44

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