verwendetes Datenbanksystem: <MSSQLExpress 2008>
Hi, habe ein Problem mit LINQ und XElement. Ich möchte das nachfolgende File (habe es nachfolgende beigefügt) den Wert von <P02_01> auslesen. Kriegs aber nicht gebacken, da ich mit LINQ auch noch nicht so frisch bin. Kann mir da jemand Beistsand leisten?
<?xml version="1.0" encoding="utf-8"?>
<Parameterfile>
<Parameterdaten>
<Diameters Numberrange="1" />
<AxialLength Numberrange="2">
<P2_01>24.3</P2_01>
<P2_02>20</P2_02>
</AxialLength>
<RadialLength Numberrange="3">
<P3_01>23.5</P3_01>
<P3_02>19.01</P3_02>
</RadialLength>
<AnglesDimensions Numberrange="4" />
</Parameterdaten>
</Parameterfile>
Hier meine Abfrage. Funktioniert leider nicht. Entweder ich muß die Abfrage noch weiter verschachteln oder ich bin zu blöd für LINQ. Irgendwie muß ich an den Wert des Elemtes <P02_01> kommen .Value muß das sein.
Eigentlich habe ich gedacht dass es mit XElement auch relativ einfach sein sollte, weil man damit auch sehr toll und einfach XML-Files erstellen kann.
private void btn_XmlLaden3_Click(object sender, EventArgs e)
{
textBox2.Clear();
textBox1.Clear();
// XDocument xdoc = XDocument.Load(@"c:\testStruktur.xml");
XElement root = XElement.Load(@"c:\testStruktur.xml");
var test = from el in root.Descendants()
where el.Name.ToString() == "P02_01"
select el;
textBox1.Text = (string) test.Value; /// Wie bekomme ich mit LINQ den Wert von <P02_01> ?????
}
Hat jemand den treffenden Tipp für mich?
Kann es vllt. sein, dass du nach "P02_01" suchst, welches aber "P2_01" heißt...?
Mfg Marc
Was soll den der Quatsch?
Warum holst du dir alle Nodes und vergleichst den namen? Hol dir doch direkt den Node anhand des namens.
=> Das sind doch absolute Basics.
var test = root.Descendants("P2_01").FirstOrDefault();
if (test != null)
{
textBox1.Text = test.Value;
}
PS. Strings braucht man nicht nochmal zu strings machen, ich denk da an dein el.Name.ToString() oder (string) test.Value
Nain daran liegts nicht. Dies war eine abgewandelte Form fürs Forum, da ist mir leider der Fehler passiert.
Super CSL, deine Lösung funzt. Natürlich schreibe ich das Quatsch, aber in der ganzen Hilfe von MSDN findet man auch kein solches Beispiel. Anahnd solcher Lösungen findet man dann auch selber wieder weiter . Bin aber bisher auf keinen rünen Zweig gekommen, da kann man auch gerne mal resignieren. Danke dir für die Hilfe.