私はこのようなXMLファイルを持っている:今、私はList<TestData>
XPathNavigatorを使用して異なるノードを返す方法
public class TestData
{
public string TestName {get; set;}
public int TestPositon {get; set;} //Position of Test node in XML file
public string TestValue {get; set;}
public string TestResult {get; set;}
}
:
<Document>
<Tests>
<Test>
<Name>A</Name>
<Value>0.01</Value>
<Result>Pass</Result>
</Test>
<Test>
<Name>A</Name>
<Value>0.02</Value>
<Result>Pass</Result>
</Test>
<Test>
<Name>B</Name>
<Value>1.01</Value>
<Result>Fail</Result>
</Test>
<Test>
<Name>B</Name>
<Value>0.01</Value>
<Result>Pass</Result>
</Test>
</Tests>
</Document>
そして、それぞれのテストのためのデータを保持するクラスを
doc = new XPathDocument(filePath);
nav = doc.CreateNavigator();
private List<TestData> GetAllTestData()
{
List<TestData> Datas = new List<TestData>();
TestData testData;
XPathNodeIterator it = nav.Select("/Document/Tests/Test/Name");
int pos = 1;
foreach(XPathNavigator val in it)
{
testData.TestPosition = pos;
testData = new TestData();
// This adds the Name, but what should I change to access Value and Result
// in the same nav ??
testData.TestName = val.Value;
Datas.Add(testData);
pos++; //Increment Position
}
return Datas;
}
私がコメントで言ったように、XPathはName
ノードを参照するだけです。どのノードを3つのforeachイテレータのために?私はこのことをどのように割り当てるかを意味します:
testData.Value = ???
testData.Result = ???
ありがとう!
申し訳ありません申し訳ありませんが私の質問ではっきりしていませんでした。私がナビゲータを執拗にしているのは、ノードの位置をXMLファイルにしたいからです。あなたのコードを使用してpositonも処理しますか?更新された質問を確認してください。 –
@ Sean87、私は私の答えを更新しました。 –
XPathで '/ Document/Tests/Test'をどのように定義すればいいですか? –