0

ここに私のxmlコードがあります:

<?xml version="1.0" encoding="utf-8"?>  
<updater>  
  <version>1.0.7</version>
  <Enabled>true</Enabled>

  <item>
    <url>some url</url>
    <name>file name</name>
  </item>

  <item>
    <url>other url</url>
    <name>other file name</name>
  </item>

</updater>

両方の item 要素内の url と name の値を取得するにはどうすればよいですか? 完全なコードには、item という名前の 9 つの要素があります。ソリューションを次のコードに適合させてください。

XmlTextReader reader = null;
        try
        {
            string xmlURL = "someurl";
            reader = new XmlTextReader(xmlURL);
            reader.MoveToContent();
            string elementName = "";
            if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "updater"))
            {
                while (reader.Read())
                {
                    if (reader.NodeType == XmlNodeType.Element) elementName = reader.Name;
                    else
                    {
                        if ((reader.NodeType == XmlNodeType.Text) && (reader.HasValue))
                        {
                            switch (elementName)
                            {
                                case "url":
                                    if (nummer >= urls.Length)
                                        Array.Resize(ref urls, urls.Length + 1);

                                    urls[nummer] = reader.Value.ToString();
                                    MessageBox.Show(urls[nummer]);
                                    break;
                                case "name":
                                    if (nummer >= names.Length)
                                        Array.Resize(ref names, names.Length + 1);

                                    names[nummer] = reader.Value.ToString();
                                    MessageBox.Show(names[nummer]);
                                    break;
                            }
                            nummer++;
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }

どんな助けでも大歓迎です。前もって感謝します。

PS。どこかが不明な場合、またはさらに情報が必要な場合は、何が必要かを説明してください。

4

2 に答える 2

4

LINQ to XMLを使用できます。

var xdoc = XDocument.Load(path_to_xml);
var items = from i in xdoc.Root.Elements("item")
            select new {
                Url = (string)i.Element("url"),
                Name = (string)i.Element("name")                
            };

これにより、アイテム要素に対応する匿名オブジェクトのリストが得られます。各オブジェクトには、URL と名前の厳密に型指定されたプロパティがあります。

foreach(var item in items)
{
   // use item.Url or item.Name
}
于 2013-07-08T14:39:13.783 に答える