2017-10-11 59 views
0

我不確定如何從XML文件中讀出數據。無法弄清楚如何在Visual Studio C中讀取xml數據#

的XML文件是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<Lijsten> 
<Lijst> 
    <Titel>Discipline</Titel> 
    <Waardes>Elektro</Waardes> 
    <Waardes>Mechanisch</Waardes> 
    <Waardes>Civiel</Waardes> 
    <Waardes>Proces</Waardes> 
</Lijst> 
<Lijst> 
    <Titel>Soort</Titel> 
    <Waardes>Tekening</Waardes> 
    <Waardes>Tekst doc</Waardes> 
    <Waardes>Afbeelding</Waardes> 
</Lijst> 
<Lijst> 
    <Titel>Afdruk</Titel> 
    <Waardes>Landscape</Waardes> 
    <Waardes>Portrait</Waardes> 
</Lijst> 
<Lijst> 
    <Titel>Kleur</Titel> 
    <Waardes>Kleur</Waardes> 
    <Waardes>Zwart</Waardes> 
</Lijst> 
<Lijst> 
<Titel>Kader</Titel> 
<Waardes>Aanwezig</Waardes> 
<Waardes>Niet aanwezig</Waardes> 
</Lijst> 
</Lijsten> 

我試圖創造每一個「Lijst」一個單選按鈕菜單。

我已經走到這一步,(不要太多):

XmlTextReader reader = new XmlTextReader("iniFile.xml"); 
while (reader.Read()) 
{ 
    while (reader.ReadToFollowing("Lijst")) 
    { 
      while (reader.ReadToFollowing("Titel")) 
      { 

      } 
    } 
} 

回答

1

如果你不想使用XElement閱讀,你可以使用XmlDocumentXPath

看看這個例子,得到所有標題:

XmlDocument xdoc = new XmlDocument(); 
xdoc.Load(@"C:\temp\inifile.xml"); 
XmlNodeList nodes = xdoc.SelectNodes("//Titel"); 

foreach (XmlNode node in nodes) 
{ 
    Console.WriteLine(node.InnerText); 
} 

,或者讓所有Lijst節點,然後遍歷它們獲得冠軍和沃德值

XmlDocument xdoc = new XmlDocument(); 
xdoc.Load(@"C:\temp\inifile.xml"); 
XmlNodeList nodes = xdoc.SelectNodes("//Lijst"); 

foreach (XmlNode node in nodes) 
{ 
    Console.WriteLine("this is List with title: " + node["Titel"].InnerText); 
    Console.WriteLine("it contains wardes: " + node["Titel"].InnerText); 
    XmlNodeList wardeNodes = node.SelectNodes("Waardes"); 
    foreach (XmlNode wNode in wardeNodes) 
    { 
     Console.WriteLine(" - " + wNode.InnerText); 
    } 
} 
+0

這對我來說是個詭計!謝謝! – Niels

1

隨着XElement類和LinqToXML:

XElement xml = XElement.Parse(xml); 
var buttons = xml.Element("Lijsten") 
       .Elements() 
       .Select(p => new { Titel = p.Element("Titel").Value }) 
       .ToArray(); 
+0

可以這樣做沒有的XElement和LINQ藏漢?我很新的編程,從來沒有使用過他們之前。 – Niels

+0

@Niels linq + XElement是安全和簡單的方法。我認爲,你最好花一些時間來學習這兩行,而不是花太多時間用while循環和if-condidions編寫更多的代碼。 – Backs