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ノードが含まれています。 'c'が特定の値と等しい場合、2つの特定の値(たとえばa = -50、b = 600)を含む結果ノードを見つけ、そのノード内に 'd'の値を見つける必要があります。さまざまな要素値に基づいてxpathを使用してxmlを検索します。
したがって、a = -50、b = 600、c = 6の場合、d(これは兄弟)の値は何ですか。
私はXPathを使用してこれを実行しようとしています。これまでのところ、ここで私が持っているものです。
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;
}
}
すべてのD'sのためのXPathが同じであるように私が試してみましたすべては、私は必要なものを私に与えるものではありません。私はXMLに新しいので、多分私は見落としているものがあります。
私はあなたが大好きです、アレクサンダー!これは私が思ったよりずっと簡単でした。ありがとうございました!!!!! – Faye
Btw、これに追加のレイヤーがあるので、私は新しい質問を投稿しました(複数のa、b、cの一致があり、x番目のものを見つけなければなりません)。 – Faye