• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Odczyt pliku XML

VPS Starter Arubacloud
0 głosów
380 wizyt
pytanie zadane 20 czerwca 2019 w C# przez DobryKurczak Bywalec (2,320 p.)

Cześć wszystkim.

Ostatnio robię prostą aplikację, której zadaniem jest m.in. dodanie pracowników do kolekcji generycznej, zapisanie do pliku xml czy też odczyt z pliku xml. Problem jest taki, że o ile zapis do pliku xml czy dodanie pracownika działa bez problemu, tak odczyt nie działa, wyrzuca mi, że wyjątek nieobsłużony.

Wyjątek nieobsłużony: System.FormatException: Nieprawidłowy format ciągu wejściowego.

Poniżej wrzucę kod i omówię klasę, co w konsoli jest nie tak:

klasa Pracownik

https://pastebin.com/0ZUb7dFJ

Tutaj w konsoli pokazuje na błąd w linijce 138, czyli na ten fragment kodu:

        public virtual void OdczytXml(DataRow dr)
        {
            this.imie = dr.ItemArray[0].ToString();
            this.nazwisko = dr.ItemArray[1].ToString();
            string[] data = dr.ItemArray[2].ToString().Split(' ');
            dataUrodzenia.Dzien = Int32.Parse(data[0]); // Tutaj pokazuje w konsoli, ze cos jest nie tak
            dataUrodzenia.Miesiac = data[1];
            dataUrodzenia.Rok = Int32.Parse(data[2]);
            string[] adres = dr.ItemArray[3].ToString().Split(' ');
            adresZamieszkania.Ulica = adres[0];
            adresZamieszkania.NumerDomu = adres[1];
            adresZamieszkania.Miasto = adres[2];

        }

Czy źle tutaj wykorzystałem funkcję Parse? Bo nie za bardzo rozumiem

Klasa FormatDanych

https://pastebin.com/aNaL4tPZ

klasa ta służy do zapisu i oodczytu pliku .xml

W konsoli pokazuje, że linijka 102 coś nie gra, chodzi o tą linijkę:

                    p.OdczytXml(dr);

Czyli tak jakby coś nie grało w Pracowniku, więc skoro stworzyłem obiekt klasy Pracownik i wywołuję metodę z tej klasy, to bardziej coś w tym Pracowniku nie gra. Ale podam jeszcze inne klasy

Klasa Lista: https://pastebin.com/PmuyVvNM

W konsoli wykazuje, że linijka 156 jest coś nie tak, wkleję fragment kodu:

        FormatDanych df = new FormatDanych();

        public void OdczytXml()
        {
            lista = df.OdczytXML();
        }

Klasa Program: https://pastebin.com/XiPG2Dbt

Tutaj linijka 116 jest coś nie tak:

                    case 8:
                        {
                            lista.OdczytXml();
                            break;
                        }

 

Są jeszcze inne klasy Informatyk, Lekarz itp ale są one klasami pochodnymi klasy Pracownik. W zasadzie to wygląda na to, że coś w tym pracowniku nie gra to parsowanie, ale jak patrzę, to wszystko powinno być ok. Może ktoś pomoże rozwiązać ten problem. Z góry dziękuję za pomoc!

1 odpowiedź

0 głosów
odpowiedź 24 czerwca 2019 przez pulson666 Stary wyjadacz (12,560 p.)
Bo nie dostajesz tam zapewne liczby lub tablica jest pusta. Zrób na samym początku tryprase i zobacz co się stanie

Podobne pytania

0 głosów
1 odpowiedź 108 wizyt
pytanie zadane 5 czerwca 2017 w C# przez gos Nowicjusz (140 p.)
0 głosów
1 odpowiedź 96 wizyt
pytanie zadane 5 czerwca 2017 w C# przez gos Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 550 wizyt
pytanie zadane 28 lipca 2016 w PHP przez rucin96 Użytkownik (500 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...