2016-06-30 35 views
-2

XMLファイル内のノードを介してあなたのサイクルを行います。ユーザーが「次へ」を選択するたびに、次のシナリオデータをさまざまなフィールドに読み込みます。明らかに、「Last」ボタンをクリックしても同じことが起こります。は、どのようにXMLファイルを持っており、構造は大体このようなものです

しかし、問題は、選択したシナリオノードの情報を読み込むだけですか?

ことは私がしようとすると、それは広すぎる "であることが表示されますので、質問を明確にしてみましょう:

私は読み込みと全体のXMLファイルの読み込みに精通しています。私はちょうど特定のノードを選択的に読みたいと思う。例:最初のシナリオノードのデータだけを読むにはどうすればよいですか?次に、ユーザーの入力に応じて、2番目のシナリオノードのデータだけを読み込みますか?次に、ユーザーの入力に応じて、最初のシナリオノードのデータだけを読み込みますか?または、3番目のシナリオノードだけですか?

本質的に、XMLには「インデックス」がないので質問していますが、どのノードのインスタンスを読み込むかを指定するにはどうすればよいですか?

XmlDocument xml = new XmlDocument(); 
xml.LoadXml("your xml"); 

XmlNodeList list = xml.SelectNodes("/ScenarioList/Scenario"); 
foreach (XmlNode xn in list)... 
+0

から、より詳細に参照することができますがXPath' 'のようなものに精通しているか、あなたも、どのように'のC#での簡単なGoogle検索を実行すると考えられてきましたXMLファイルから値を読み込み/取得する 'now on .. – MethodMan

+3

http://stackoverflow.com/questions/2441673/reading-xml-with-xmlreader-in-c-sharp 多分あなたが助けてくれる – Unlockedluca

+2

これは広すぎます、 本当に。 LINQ to XMLを見て、特定の質問があるときに戻ってきてください。 –

答えて

2

まず、あなたは、このように、あなたは、特定のノードを選択し、それらを反復することができ、XmlDocumentオブジェクトにXMLをロードする必要があります。 オブジェクトグラフの特定のノードを基準に複数のパスを評価する必要がある場合は、相対JXPathContextを作成することができます。

まず、相対コンテキストのルートになるはずの場所のポインタを取得します。その後

JXPathContext context = JXPathContext.newContext(bean); 

Pointer addressPtr = context.getPointer("/employees[1]/addresses[2]"); 

JXPathContext relativeContext = 
       context.getRelativeContext(addressPtr); 

// Evaluate relative path 
String zipCode = (String)relativeContext.getValue("zipCode"); 

// Evaluate absolute path 
String name = (String)relativeContext.getValue("/employees[1]/name"); 

// Use the parent axis to locate the employee for the current address 
Double salary = (Double)relativeContext.getValue("../salary"); 

を呼び出すことにより、相対的なコンテキストを取得あなたはhere

+0

はい!これは私が書いたこととほぼ同じです。しかし、どのようにして "/ ScenarioList/Scenario"を読むのですか?たとえば、この "/ ScenarioList/Scenario"の3番目のインスタンスを読みたいとします。このインスタンスだけをどうやって読むのですか? – zetar

+1

インデックスリストを渡す[2] – Crwydryn

2

あなたはJXPathはを使用してノードにトラバースすることができます

関連する問題