2013-07-08 97 views
0

這裏是我的XML代碼的文本: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> 

我怎樣才能得到這兩個項目元素的內部,網址和名稱的價值?完整的代碼有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。如果我在某個地方不清楚,或者如果您需要更多信息,那麼只需說明需要什麼。

+0

使用LINQ到XML –

回答

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

這將給對應的項目元素匿名對象的列表。每個對象將有網址和名稱強類型的屬性:

foreach(var item in items) 
{ 
    // use item.Url or item.Name 
} 
+0

就是了&DL = 1是它給了我一個錯誤。 – MasterXD

+0

Xdoc給我錯誤 – MasterXD

+0

@MasterXD'&dl = 1爲&dl; 1'這是什麼?你收到哪個錯誤? –

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

我如何知道它正在閱讀的文本是來自url還是名稱? – MasterXD

+0

您可以使用建議的lazyberezovsky之類的匿名函數。 –