web-dev-qa-db-ja.com

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);
            }


        }
    }
}
12
Jan W

多分これを試してください

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

あなたは本当に近くにいます。ゲームノードを見つけました。ゲームの子として存在する場合は、さらに一歩進んで名前ノードを取得しませんか?

for eachループで:

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

またはこれを試してください:

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

これは、XMLファイルから2つの特定のノードを見つけてフェッチし、それらを文字列配列として返す単純な関数の例です。

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
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] =名前
  • root [0] [1] = url
  • 「.text」を使用して、値の文字列表現を取得します
  • この例はpythonを使用しています
0
Tony