web-dev-qa-db-fra.com

Comment trouver un nœud spécifique dans mon XML?

Je dois lire le noeud "nom" du fichier XML à partir du code XML suivant, mais je ne sais pas comment le faire.

Voici le XML:

<?xml version="1.0" standalone="yes" ?>
  <games>
    <game>
      <name>Google Pacman</name>
      <url>http:\\www.google.de</url>
    </game>
  </games>

Code:

using System.Xml;

namespace SRCDSGUI
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(Application.StartupPath + @"\games.xml");


            XmlElement root = doc.DocumentElement;
            XmlNodeList nodes = root.SelectNodes("//games");

            foreach (XmlNode node in nodes)
            {
                listBox1.Items.Add(node["game"].InnerText);
            }


        }
    }
}
8
Jan W

Peut-être essayer ceci

XmlNodeList nodes = root.SelectNodes("//games/game")
foreach (XmlNode node in nodes)
{
    listBox1.Items.Add(node["name"].InnerText);
}
13
Krishna

Vous êtes vraiment proche - vous avez trouvé le nœud du jeu, pourquoi ne pas aller plus loin et obtenir simplement le nom du nœud s'il existe en tant qu'enfant sous le jeu?

dans votre pour chaque boucle:

listBox1.Items.Add(node.SelectSingleNode("game/name").InnerText);
2
Ryan Bennett

Ou essayez ceci:

XmlNodeList nodes = root.GetElementsByTagName("name");
for(int i=0; i<nodes.Count; i++)
{
listBox1.Items.Add(nodes[i].InnerXml);
}
1
hx_9009

Voici un exemple de fonction simple qui trouve et récupère deux nœuds particuliers dans un fichier XML et les renvoie sous forme de tableau de chaînes.

private static string[] ReadSettings(string settingsFile)
    {
        string[] a = new string[2];
        try
        {
            XmlTextReader xmlReader = new XmlTextReader(settingsFile);
            while (xmlReader.Read())
            {
                switch (xmlReader.Name)
                {
                    case "system":
                        break;
                    case "login":
                        a[0] = xmlReader.ReadString();
                        break;
                    case "password":
                        a[1] = xmlReader.ReadString();
                        break;
                }

            }    
            return a;
        }
        catch (Exception ex)
        {
            return a;
        }
    }
0
IgorM