Ich habe das folgende XML-Schema auf, wo ich Linq verwenden möchte, um 2 Attribute abzufragen. Ich habe gesucht, aber nicht die richtige Lösung gefunden.So wählen Sie mehrere Attribute
<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>
Für die xml oben, nachdem der Wert von „Dynamic“ bekommen und es mit oldTnl Variable, wenn gleich zu vergleichen, möchte ich wählen oder „Tnl“ Wert (2232) zu erhalten.
Derzeit teste ich mit diesem Code und erfolgreich den Wert von "Dynamic", aber ich möchte wirklich den Wert von "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());
}
}
}
Etwas wie:
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....
}
}
}
Vielen Dank im Voraus ... ich noch LinQ lerne :).
Aktualisiert 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>
Sie wollen also den Wert des 'bist' Element, in dem der' Name 'bei Tribut ist ** "Tnl" ** und es gibt ein Geschwister 'bist' Element, das ein' Name' Attribut mit einem Wert von ** "dynamisch" hat **? –
Ich brauche die Dynamik zum Vergleich dann werde ich das Tnl danach bekommen. Wenn die Dynamik nicht gleich ist oder nicht existiert, macht sie nichts. – mygtwo