2016-07-09 23 views
2
<?xml version="1.0" encoding="utf-8" ?> 
    <questions> 
     <question num="1">Employees should be involved in setting their goals.</question> 
     <question num="2">Most people resists change.</question> 
     <question num="3">Manager should guide rather control.</question> 
     <question num="4">Average person is easily decieved.</question> 
    </questions> 

メソッドnext()が呼び出されたときにこの現在の属性iを使用して、現在の属性値を変数iに設定するには、次のノード値を取得する必要があります(たとえば、現在の属性値が1 ()は2番目のノードの値を取得する必要があり、next()が呼び出されたときに3番目の属性値を取得する必要があります)System.Xml?Xmlで現在の属性値を取得し、現在の属性値を使用して次のノード値を取得する方法は?

Xpathを使用して最初のノード値を取得しようとしましたが、現在の属性値を変数に設定し、次のノード値に移動する変数を使用する方法がわかりません。以下は私が試したコードです。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Xml; 
using System.Xml.XPath; 

namespace ConsoleApplication14 
{ 
    interface IQuestion 
    { 
     void Question1(); 
     void Next(); 

    } 
    class Question : IQuestion 
    { 
     string BuildXpathQuery(int c) 
     { 

      string part1 = @"questions/question[@num='"; 
      string part2 = @"']"; 
      string MyQuery = part1 + c + part2; 
      return MyQuery; 

     } 
     public void Question1() 
     { 
      XmlDocument doc = new XmlDocument(); 
      doc.Load("C:\\Users\\Murari\\Documents\\Visual Studio 2015\\Projects\\ConsoleApplication14\\ConsoleApplication14\\XMLFile1.xml"); 


      XmlNode xnList = doc.SelectSingleNode(BuildXpathQuery(1)); 
      if (xnList != null) 
      { 
       Console.WriteLine(xnList.InnerXml); 
       Console.ReadKey(); 
      } 
     } 

     public void Next() 
     { 

     }  
    } 


    class Program 
    { 
     static void Main(string[] args) 
     { 
      IQuestion ques = new Question(); 
      ques.Question1(); 
      ques.Next(); 


     } 
    } 
} 

答えて

0

あなた一覧<>オブジェクトを作成するための簡単な必要性を。 XMLの使用Linqは最適な方法です

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     const string FILENAME = @"c:\temp\test.xml"; 
     static void Main(string[] args) 
     { 
      XDocument doc = XDocument.Load(FILENAME); 

      var xnList = doc.Descendants("question").Select(x => new 
      { 
       num = (int)x.Attribute("num"), 
       text = x.Value 
      }).ToList(); 

      foreach (var question in xnList) 
      { 
      } 
     } 
    } 
} 
関連する問題