Как найти определенный узел в XML?
Я должен прочитать XML-узел " имя " из следующего XML, но я не знаю, как это сделать.
вот XML:
<?xml version="1.0" standalone="yes" ?>
<games>
<game>
<name>Google Pacman</name>
<url>http:www.google.de</url>
</game>
</games>
код:
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);
}
}
}
}
5 ответов
может быть, попробуйте это
XmlNodeList nodes = root.SelectNodes("//games/game")
foreach (XmlNode node in nodes)
{
listBox1.Items.Add(node["name"].InnerText);
}
вы действительно близки - вы нашли в игре узла, почему бы тебе не пойти дальше и просто получить имя узла, если он существует, как ребенок в игре?
в каждом цикле:
listBox1.Items.Add(node.SelectSingleNode("game/name").InnerText);
вот пример простой функции, которая находит и извлекает два конкретных узла из XML-файла и возвращает их как string array
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;
}
}
или попробуйте этот:
XmlNodeList nodes = root.GetElementsByTagName("name");
for(int i=0; i<nodes.Count; i++)
{
listBox1.Items.Add(nodes[i].InnerXml);
}
import xml.etree.ElementTree as ET
tree= ET.parse('name.xml')
root= tree.getroot()
print root[0][0].text
- root = игры
- root[0] = игра
- root[0][0] = name
- root[0][1] = url
- использовать ".текст" чтобы получить строковое представление значения
- в этом примере используется python