Autor Beitrag
MarcoG88
Hält's aus hier
Beiträge: 9



BeitragVerfasst: So 13.02.11 14:27 
Hallo an alle die sich etwas mit Linq auskennen.

Ich habe folgendes Problem, ich habe eine XML Datei welche Folgendermaßen aussieht:

ausblenden volle Höhe XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
<Equip>
  <Set1>
    <Maske>
      <Hersteller></Hersteller>
      <Bezeichnung></Bezeichnung>
      <Beschreibung></Beschreibung>
      <IMG></IMG>
    </Maske>
    <Hopper>
      <Hersteller />
      <Bezeichnung />
      <Beschreibung />
      <IMG />
    </Hopper>
    <Battlepack>
      <Hersteller />
      <Bezeichnung />
      <Beschreibung />
      <IMG />
    </Battlepack>
  </Set1>
  <Set2>
   <Maske>
      <Hersteller></Hersteller>
      <Bezeichnung></Bezeichnung>
      <Beschreibung></Beschreibung>
      <IMG></IMG>
    </Maske>
    <Hopper>
      <Hersteller />
      <Bezeichnung />
      <Beschreibung />
      <IMG />
    </Hopper>
    <Battlepack>
      <Hersteller />
      <Bezeichnung />
      <Beschreibung />
      <IMG />
    </Battlepack>
  </Set2>
</Equip>


Jetzt möchte ich quasi jedes "Item" in "Set" auslesen.
Was ich mit folgenden Code versucht habe:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
//Alle Gears auslesen :o
            XDocument xdocument = XDocument.Load(ProfilePath + "\\" + CurrentUser.Benutzername + "\\Equip\\equip.xml");

            var quary = from ItemX in xdocument.Descendants("Equip")
                        select new Gear
                        {
                            Mask = new Item
                            {
                                Hersteller = ItemX.Element("Maske").Element("Hersteller").Value ?? "",
                                Bezeichnung = ItemX.Element("Maske").Element("Bezeichnung").Value ?? "",
                                Beschreibung = ItemX.Element("Maske").Element("Beschreibung").Value ?? "",
                                ImagePath = ItemX.Element("Maske").Element("IMG").Value ?? "",
                            },
                            Hopper = new Item
                            {
                                Hersteller = ItemX.Element("Hopper").Element("Hersteller").Value ?? "",
                                Bezeichnung = ItemX.Element("Hopper").Element("Bezeichnung").Value ?? "",
                                Beschreibung = ItemX.Element("Hopper").Element("Beschreibung").Value ?? "",
                                ImagePath = ItemX.Element("Hopper").Element("IMG").Value ?? "",
                            },
                            Battlepack = new Item
                            {
                                Hersteller = ItemX.Element("Battlepack").Element("Hersteller").Value ?? "",
                                Bezeichnung = ItemX.Element("Battlepack").Element("Bezeichnung").Value ?? "",
                                Beschreibung = ItemX.Element("Battlepack").Element("Beschreibung").Value ?? "",
                                ImagePath = ItemX.Element("Battlepack").Element("IMG").Value ?? "",
                            },
                        };


Das Problem ist, das ich immer eine NullReferenceExpeption bekomme... und ich weiß nicht warum, da ich ja mit

ausblenden C#-Quelltext
1:
?? ""					


schon NULL abfange...

Gear stellt eine Klasse dar welche mehrere Items hat, ein Item hat die Propertys "Hersteller, bezeichnung usw."...


Ich hoffe jemand weiß einen grund warum ich diese Objektverweis dingens bekomme
Gruß
Marco


Moderiert von user profile iconKha: Topic aus C# - Die Sprache verschoben am So 13.02.2011 um 13:37
Moderiert von user profile iconChristian S.: Code- durch XML-Tags ersetzt
Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
MarcoG88 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: So 13.02.11 14:37 
Hallo,

hat sich erledigt.
Problem war, das in der Quary vergessen wurde erst nach dem element "Set" zu suchen.
Nach einer kleinen anpassung der XML war das kein problem mehr.

JEder Tag heißt jetzt Set und die Zahl dahinter habe ich als Attribut gemacht
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 13.02.11 14:45 
[OT]"Bekomme Quary nicht gebacken"... wie schmeckt denn ein "Quary" ;) ? [/OT]

_________________
>λ=