Entwickler-Ecke

Basistechnologien - LINQ to XML (Nullwerte behandeln)


Nordlicht321 - Mo 09.02.15 12:52
Titel: LINQ to XML (Nullwerte behandeln)
Hallo Leute,

ich habe eine XML die wie folgt aufgebaut ist.

XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
- <Personen>
- <Person>
  <Vorname>Klaus</Vorname> [u]
  <Zuname>Meier</Zuname
  <Alter>20</Alter
  <Adresse Ort="Köln" Postleitzahl="57848" Strasse="Bahnhofstr.6" /> 
  </Person>

- <Person>
  <Vorname>Petra</Vorname
  <Zuname>Schmidt</Zuname
  <Alter>43</Alter
  <Adresse Ort="Düsseldorf" /> 
  </Person>
- <Person>

  <Vorname>Rolf</Vorname
  <Zuname>Klose</Zuname
  <Alter>66</Alter
  <Adresse Ort="Frankfurt" Strasse="Hanauerstr.78" /> 
  </Person>
  </Personen>


Hier möchte ich jetzt von allen Elementen die Attribute auslesen. Bei den Elementen Vorname, Zuname und Alter ist das auch kein Problem nur bei den Childs von Adresse weiß ich nicht wie vorgehen soll! Wie kann ich dem Programm sagen das es den Wert 0 ausgeben soll wenn ein Element nicht gefunden wurde ohne das das Programm vorher abbricht?

Danke für die Hilfe!

Codeausschnitt:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
XDocument  XMLPerson = XDocument.Load("Per.FileName")

var Leuten = from Leute in XMLPerson.Descendants("Person")
     select new                                 
     {
      LVorname = (string) Leute.Attribute ("Vorname"),
      LZuname = (string) Leute.Attribute ("Zuname"),
      LAlter = (string) Leute.Attribute ("Alter"),

      LAdresse = Leute.Elements ("Adresse")
     };


Moderiert von user profile iconTh69: XML-Tags hinzugefügt
Moderiert von user profile iconTh69: C#-Tags hinzugefügt


Ralf Jansen - Mo 09.02.15 15:53

Du hast scheinbar Elements und Attribute verwechselt. An alle Attribute von Adresse kommst du über Leute.Element("Adresse").Attributes().