| 

.NET C# Java Javascript Exception

2
Hallo zusammen,
ich habe ein kleines Problem beim Auslesen einer XML-Struktur mit LINQ.

Das XML sieht folgendermaßen aus:
<?xml version="1.0" encoding="utf-8" ?>
<Klassifizierungen>
<Klassifizierung>
<Bezeichnung>niedrig/unwahrscheinlich</Bezeichnung>
<Wert>0</Wert>
<Farbe>#DE23DE3</Farbe>
<AnzahlRisiken>5</AnzahlRisiken>
<Eintrittswahrscheinlichkeit>
<Bezeichnung>unwahrscheinlich</Bezeichnung>
<Wert>0</Wert>
</Eintrittswahrscheinlichkeit>
<Auswirkung>
<Bezeichnung>niedrig</Bezeichnung>
<Wert>0</Wert>
</Auswirkung>
</Klassifizierung>
...


Hier die Klasse, welche aus dem XML erzeugt werden soll:
public class Klassifizierung : Bewertung
{
public Eintrittswahrscheinlichkeit EW { get; set; }
public Auswirkung AW { get; set; }
public string HexValue { get; set; }
public int AnzahlRisiken { get; set; }
}


Und hier der Code mit der LINQ Query. Problem ist, dass ich aus den Knoten "Eintrittswahrscheinlichkeit" kein Objekt erzeugen kann. Der Wert ist immer null. Sieht hier jemand das Problem?

XDocument doc = XDocument.Load("Klassifizierungen.xml");
var klassifizierungen = from info in doc.Descendants("Klassifizierung")
select new Klassifizierung
{
Bezeichnung = Convert.ToString(info.Element("Bezeichnung").Value),
Wert = Convert.ToInt32(info.Element("Wert").Value),
HexValue = Convert.ToString(info.Element("Farbe").Value),
AnzahlRisiken = Convert.ToInt32(info.Element("AnzahlRisiken").Value),
// Hier funktioniert was nicht
EW = (from ew in info.Descendants("Eintrittswahrscheinlichkeit")
select new Eintrittswahrscheinlichkeit() {
Bezeichnung = ew.Element("Bezeichnung").Value,
Wert= Convert.ToInt32(ew.Element("Wert").Value) })
as Eintrittswahrscheinlichkeit };
News:
21.06.2011
Gast
21 1
1 Antwort
0
Du castest das Ergebnis von "from ew in info..." auf "Eintrittswahrscheinlichkeit". Du bekommst dort aber ein IEnumerable<Eintrittswahrscheinlichkeit>.

So müßte es gehen:

...
EW = (from ew in info.Descendants("Eintrittswahrscheinlichkeit")
select new Eintrittswahrscheinlichkeit() {
Bezeichnung = ew.Element("Bezeichnung").Value,
Wert= Convert.ToInt32(ew.Element("Wert").Value) }).Single()
...
21.06.2011
Matthias Hlawatsch 8,4k 2 8

Stelle deine .net-Frage jetzt!