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);
}
}
}
}
Peut-être essayer ceci
XmlNodeList nodes = root.SelectNodes("//games/game")
foreach (XmlNode node in nodes)
{
listBox1.Items.Add(node["name"].InnerText);
}
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);
Ou essayez ceci:
XmlNodeList nodes = root.GetElementsByTagName("name");
for(int i=0; i<nodes.Count; i++)
{
listBox1.Items.Add(nodes[i].InnerXml);
}
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;
}
}