2
<OverallReport>
<Results>
<Data1>
<a> -30 </a>
<b> 400 </b>
</Data1>
<Data2>
<MoreData>
<c> 2 </c>
<d> 100 </d>
</MoreData>
<MoreData>
<c> 4 </c>
<d>200</d>
</MoreData>
</Data2>
</Results>
<Results>
<Data1>
<a> -50 </a>
<b> 600 </b>
</Data1>
<Data2>
<MoreData>
<c> 2 </c>
<d> 200 </d>
</MoreData>
<MoreData>
<c> 6 </c>
<d>500</d>
</MoreData>
<Data2>
</Results>
</OverallReport>
我有一個XML文檔,如上所述,它包含任意數量的結點節點和任意數量的MoreData節點。我必須找到包含兩個特定值(例如a = -50,b = 600)的結果節點,如果'c'等於特定值,則在該節點內找到'd'的值。所以基本上,如果a = -50,b = 600,c = 6,那麼d(它是兄弟)的值是多少。使用基於各種元素值的xpath搜索xml
我想用XPath做到這一點。到目前爲止,這裏是我的。我已經試過不給我我需要什麼,因爲XPath的所有D的
var resultsNodes = document.SelectNodes(「OverallReport/Results」);
var data1ANodes = document.SelectNodes(「OverallReport/Results/Data1/a」);
var data1BNodes = document.SelectNodes(「OverallReport/Results/Data1/b」);
var data2CNodes = document.SelectNodes(「OverallReport/Results/Data2/c」);
var data2DNodes = document.SelectNodes(「OverallReport/Results/Data2/d」);
string wantedA = 「-50」;
string wantedB = 「600」;
string wantedC = 「6」;
string wantedD = "500";
for (int i=0; i<resultsNodes.Count; i++)
{
if (data1Anodes[i].InnerXml == wantedA && data1Bnodes[i].InnerXml == wantedB)
{
//do something.
//the goal is to compare the output of D with wantedD
i = resultsNodes.Count;
}
}
一切都是一樣的。我對XML很陌生,所以也許我會忽略一些東西。
我非常愛你,亞歷山大!這比我想象的要簡單得多。謝謝!!!!! – Faye
順便說一句,我發佈了一個新的問題,因爲有一個額外的層(這將有多個匹配a,b,c的,我必須找到第x個)。 – Faye