2017-10-11 4 views
0

XMLファイルからデータを読み取る方法がわかりません。Visual StudioでXMLデータを読み取る方法がわかりません。C#

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

、あなたが使用することができますXmlDocumentおよびXPath

この例を見て、すべてのタイトルを取得してください:

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ノードを取得し、タイトルとwardeが

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

LinqToXML XElementクラスにして:あなたはXElementを使用して読みたくない場合は

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

値を取得するためにそれらを反復処理するには、このは、XElementオブジェクトとLINQのaswellなしで行うことができますか?私はかなりプログラミングに新しいし、それらの前に使用したことはありません。 – Niels

+0

@Niels linq + XElementは安全かつ簡単な方法です。 while-loopsとif-condidionsを使ってコードを書くのに多くの時間を費やすよりも、これらの2つの行を学ぶのに少し時間を費やす方が良いと思います。 – Backs

関連する問題