Autor Beitrag
Nordlicht321
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 09.02.15 12:52 
Hallo Leute,

ich habe eine XML die wie folgt aufgebaut ist.
ausblenden 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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().