Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

25.11.2011, 13:43

LINQ to XML

hallo. ich lies ein langes xml file mittels LINQ ein.
Funktioniert ganz gut, solang das file korrekt ist. Jetzt ist es ja ansich kein problem, wenn bei einem Element im XML file mal ein unterelement fehlt, allerdings
find ich grad keine rechte möglichkeit in linq zumindest anzuzeigen welches objekt falsch ist...

List<Person> linqPers = (from c in data.Descendants("person")
select new Person()
{
name_ = c.Element("name").Value,
phone_= Convert.ToInt32(c.Element("phone").Value)
}).ToList<Personen>();

Also es gibt auch einträge, die keine Telephonnummer haben und in diesem fall bekomm ich von dem query aufruf nix zurück außer einer Exception.
Ich würd aber gerne z.b. dann ausgeben. "Person bla hat keine Telephonnummer", und weitermachen.

kann mir da jemand helfen? geht das in linq to xml?

lg

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

25.11.2011, 14:06

WHERE und UNION sind die Begriffe, die Du brauchst.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

3

25.11.2011, 14:33

Ganz spontan würde ich eher dazu tendieren zu überprüfen ob c.Element("phone") == null ist, laut Doku liefert Element(XName name) null zurück wenn das gesuchte Element nicht vorhanden ist. Die Telefonnummer würde ich auch nicht unbedingt als Int32 speichern ;)

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
var linqPers = data.Descendants("person").Select(c =>
{
  var nameElement = c.Element("name");
  var phoneElement = c.Element("phone");
  return new Person()
  {
    _name = nameElement == null ? string.Empty : nameElement.Value,
    _phone = phoneElement  == null ? string.Empty : phoneElement.Value,
  }
}).ToList();

4

27.11.2011, 14:32

danke für eure antworten. werde mir beides anschauen. und ja das mit der telephonnummer.
da hab ich mich ver-copy-und-pastet...
is ein string.

danke

lg

Werbeanzeige