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

Odczyt pliku XML

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
458 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ź 140 wizyt
pytanie zadane 5 czerwca 2017 w C# przez gos Nowicjusz (140 p.)
0 głosów
1 odpowiedź 146 wizyt
pytanie zadane 5 czerwca 2017 w C# przez gos Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 686 wizyt
pytanie zadane 28 lipca 2016 w PHP przez rucin96 Użytkownik (500 p.)

93,440 zapytań

142,431 odpowiedzi

322,679 komentarzy

62,802 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

...