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 的值?完整的代码有 9 个名为 item 的元素。请使解决方案适合此代码:

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 和 name 的强类型属性:

foreach(var item in items)
{
   // use item.Url or item.Name
}
于 2013-07-08T14:39:13.783 回答
0
XDocument doc = XDocument.Load("Xml.xml");

IEnumerable<XElement> items = doc.Descendants("updater").Elements("item")
                              .Select(x => new { Url = x.Element("url").Value, 
                                                 Name = x.Element("name").Value });
于 2013-07-08T14:45:26.300 回答