Obtenir un node par son tag

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Je me suis remis récemment au C# (vu que je suis désormais sous Windows 10) et j'essaie actuellement de parser des fichiers XML. J'y arrivais sans problème en C++ mais je galère un peu plus en C#. Voici mon code :

 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;
using System.Xml;

class Program
{
    static void Main(string[] args)
    {
        XmlDocument doc = new XmlDocument();

        doc.LoadXml("<books xmlns=\"http://www.contoso.com/books\"> \n" +
                    "  <book genre=\"novel\" ISBN=\"1-861001-57-8\" publicationDate=\"1823-01-28\"> \n" +
                    "    <title>Pride And Prejudice</title> \n" +
                    "    <price>24.95</price> \n" +
                    "    <author>Exemple Exemple</author> \n" +
                    "  </book> \n" +
                    "  <book genre=\"novel\" ISBN=\"1-861002-30-1\" publicationDate=\"1985-01-01\"> \n" +
                    "    <title>The Handmaid's Tale</title> \n" +
                    "    <price>29.95</price> \n" +
                    "  </book> \n" +
                    "</books>");

        XmlNode root = doc.FirstChild;
        if (root.HasChildNodes)
        {
            for (int i = 0; i < root.ChildNodes.Count; i++)
            {
                Console.WriteLine("Title: " + root.ChildNodes[i].SelectSingleNode("title").InnerText);
                Console.WriteLine("Price: " + root.ChildNodes[i].SelectSingleNode("price").InnerText + "\n");
            }
        }

    }
}

Je pense que c'est la méthode SelectSingleNode(string xpath) qui fait planter mon script.
Voici l'erreur que j'obtient :

1
2
Exception non gérée : System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
   à Program.Main(String[] args) dans D:\Dev\C#\MoreOrLess\MoreOrLess\Program.cs:ligne 27

Merci de votre aide et bonne journée ! :)

Mon projet : OpenPlane, un utilitaire en Java pour les pilotes, les vrais !

+0 -0
Staff

Il faut simplement que tu vérifies le retour de chacune des méthodes que tu appelles en chaîne sur les deux lignes incriminées. Je ne connais pas C# mais de toute évidence l'une d'elles retourne Null là ou tu présupposes l'inverse.

Je parie sur SelectSingleNode.

Peut-être faut-il que tu lui passes un xpath relatif tel que .//price. Difficile à dire sans débugger.

Édité par nohar

I was a llama before it was cool

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte