我有以下xml架構上我想用linq查詢2屬性的位置。我已經四處搜尋,但還沒有找到正確的解決方案。如何選擇多個屬性
<Object class="MA" Name="Sample">
<bist name="act">false</bist>
<bist name="Dynamic">1234</bist>
<bist name="Fast">false</bist>
<bist name="plane">false</bist>
<bist name="Tnl">2232</bist>
</Object>
對於上面的XML,收到「動態」的價值,並將其與oldTnl變量比較後,如果相等,我要選擇或得到「TNL」值(2232)。
目前,我正在測試這個代碼,併成功獲得「動態」的價值,但我真的想要「Tnl」的價值。
private void mGetTnlFromXML(string oldTnl)
{
XDocument doc = XDocument.Load("sample.xml");
var bt = from p in doc.Descendants()
where (string)p.Attribute("name") == "Dynamic"
select p;
foreach (string b in bt)
{
if (b == oldTnl)
{
MessageBox.Show(b.ToString());
}
}
}
喜歡的東西:
private void mGetTnlFromXML(string oldTnl)
{
XDocument doc = XDocument.Load("sample.xml");
var bt = from p in doc.Descendants()
where (string)p.Attribute("name") == "Dynamic"
//is there are way i can also find "Tnl" here and use
//later?
select p; //or select "Tnl" here.
foreach (string b in bt)
{
if (b == oldTnl)
{
//select "Tnl" value (2232)
//use "Tnl" value (2232)
//do something....
}
}
}
預先感謝您......我還在學習的LinQ :)。
更新XML:
<Root>
<Data>
<Object class="MA" Name="Sample">
<bist name="act">false</bist>
<bist name="Dynamic">1234</bist>
<bist name="Fast">false</bist>
<bist name="plane">false</bist>
<bist name="Tnl">2232</bist>
</Object>
</Data>
</Root>
所以,你想要的'bist'元素的值,其中'名字在...處致敬是**「Tnl」**並且存在一個兄弟'bist'元素,其具有值爲**「dynamic」**的'name'屬性? –
我需要動態比較,然後我會得到Tnl。如果動態不相等或不存在,它不會執行任何操作。 – mygtwo