Wpis z mikrobloga

Czytam sobie o serializacji danych z pliku xml i zastanawia mnie jedna rzecz. O ile wczytywanie prostych struktur do obiektów jest banalne To w jaki sposób mogę wczytać do listy strukturę, w której tagach zagnieżdża się potomków rodzica?
Chodzi mi np. o tego typu strukturę:

Gdzie userzy będący wewnątrz tagów user są potomkami elementów, w których są zagnieżdżane.

#programowanie #csharp
  • 15
@Razi91: @shar: Mam użytkowników, których id oznacza kolejność dodania, a dodaje ich rodzic. Użytkownik z ID 1 jest rodzicem wszystkim (przypomina to strukturę drzewa). W obrazku ze screena będzie to lepiej wyglądać. Ogólnie tagi zagnieżdżone wewnątrz tagów są potomkami rodziców, a rodzice moga być potomkami innych rodziców. Stąd się zastanawiałem w jaki sposób to zczytać z xml, aby wrzucić sobie do listy gdzie sobie założę 3 parametry- parametr id z
Pobierz KorelacjaProkrastynacji - @Razi91: @shar: Mam użytkowników, których id oznacza kolejn...
źródło: comment_0W17a6qoSR6ZFfSxhOVJ3S2uohEZOxKD.jpg
@KorelacjaProkrastynacji przykład czemu pchanie xml wszędzie gdzie to możliwe jest pomysłem debilnym, zwłaszcza gdy jest to zrobione w nieogarnięty sposób. Ja bym to zrzucił do mapy gdzie kluczem jest id rodzica, a wartością tablica z dziećmi lub do listy użytkowników z linkami do dzieci lub po prostu w instancji każdego dziecka zapisał id rodzica. Zależy jaki format byłby w danym zadaniu optymalny. Czytanie można zrobić rekurencyjnie.
@Razi91: Ogólnie zadanie mam z rozmowy o pracę. Pytam jedynie jak to ogarnąć wczytywanie, bo muszę pobrać dane z pliku. O ile pomysły na samo rozwiązanie zadania juz mam i rozpisałem sobie większośc algorytmów i mam rozpisany model klas, to nie wiem po prostu jak siię zabrać za zczytywanie danych z xml. Czy parsować po stringach, czy zzytywac z klas XML dostępnych w net.
To, że czytanie można wykonać rekurencyjne to
@KorelacjaProkrastynacji: łatwo to ogarniesz parserem strumeniowym. Trzymasz sobie listę userów i osobno stos, jak otwiera ci się tag usera to dodajesz jako dziecko wierzchołka stosu (o ile jest niepusty), wrzucasz na wierzch stosu. Jak tag się zamyka to zrzucasz ze stosu, dodajesz do listy userów.

Potencjalne problemy: zdublowany użytkownik, użytkownicy bez id.
@KorelacjaProkrastynacji: Spróbuj to zrobić na dwa sposoby - normalnym parserem obiektów xmlowych, drugi raz strumieniowo (żeby zobaczyć jak działa, czasami jest przydatny np do szukania niewielkiej ilości danych w dużych plikach bez ryzykowania zarypania całej pamięci plikiem), napisz sobie jeszcze serializację która radzi sobie z zapisaniem takiej hierarchii w której jest cykl (przodek jakiegoś węzła jest jego potomkiem). Parsowanie innych hierarchicznych formatów będzie bardzo podobne.