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