我有這樣一個XML文件:如何訪問具有相同父項的不同XML節點?
<Document>
<Tests>
<Test>
<Name>A</Name>
<Value>1</Value>
</Test>
<Test>
<Name>A</Name>
<Value>2</Value>
</Test>
<Test>
<Name>B</Name>
<Value>10</Value>
</Test>
<Test>
<Name>B</Name>
<Value>20</Value>
</Test>
</Tests>
</Document>
我做了一個類來保存每個Test
節點數據:
public class TestData
{
public string TestName {get; set;}
public float TestValue {get; set;}
}
和我讀到使用XPATH類似這樣的數據(ztr
是實例XmlDocument
我已經知道的Test
的名字,我要讀,因爲它是populted到一個ListView):
public TestData GetTestData(string testName)
{
TestData data = new TestData();
data.TestName = testName;
data.TestValue = float.Parse(ztr.SelectSingleNode("/Document/Tests/Test[Name = '" + testName + "')]/Value").InnerText, CultureInfo.InvariantCulture);
return data;
}
現在,問題是,如果我想將數據列表作爲List<TestData>
,那麼每個TestData只引用XML文件中第一次出現Test節點。我的意思是讓我想象我有一個ListView已經填充我的xml文件中所有Test
節點的名稱。也就是這樣的在這種情況下:
ListView = A,A,B,B
,然後我的所有名稱複製到一個String []數組
而且我用這個代碼來閱讀所有一氣呵成:
private List<TestData> GetAllData()
{
List<TestData> Datas = new List<TestData>();
TestData data;
foreach(string test in stringOfNames)
{
data = new TestData;
data = GetTestData(test);
Datas.add(data);
}
return Datas
}
正如我告訴過你這段代碼並沒有區分不同的Test
。它只是返回Test
中第一次出現這樣的GetAllData()
結果將是:
Name Value
A 1
A 1
B 10
B 10
但我希望它像
Name Value
A 1
A 2
B 10
B 20
你能告訴我什麼,我做錯了?以及如何解決這個問題?
P.S.我寫的所有代碼只是在這裏計算器...他們沒有編制,試想他們很好地工作:d
所以...你想要累積的價值? –