Dokumenty XML w C# .NET – wprowadzenie

Dokumenty XML stanowią uniwersalną formę bazodanową przechowywaną w formie otwartego tekstu. Dokumenty XML mogą być interpretowane przez dowolną platformę sprzętową, język programowania czy system operacyjny, a ich struktura jest zrozumiała nawet w czystej formie.

Z uwagi na swoją uniwersalność oraz międzyplatformowość dokumenty XML często wykorzystywane są do przesyłania danych pomiędzy projektami, które mogą być stworzone przy użyciu różnych platform programistycznych czy sprzętowych. Jednym z najbardziej wyrazistych przykładów są tutaj usługi Web Services platformy .NET Framework.

Dokumenty XML wykorzystywane są również często jako pliki konfiguracyjne lub językowe aplikacji. Nie wymagają one serwera interpretacyjnego, jak ma to miejsce w przypadku baz danych SQL, są więc lekkie w obsłudze.

Uniwersalność dokumentów XML przypomina tą znaną z dokumentów HTML, które mogą być odczytywane za pośrednictwem sieci Internet przez dowolne przeglądarki internetowe niezależnie od tego na jakim systemie lub sprzęcie one się znajdują.

Dokumenty XML z nowym rekordem danych

Jak zawsze starałem się zachować przejrzystość interfejsu aplikacji przykładowej wyposażając ją jedynie w podstawowe kontrolki oraz funkcjonalność.

Dokument XML Interface

Dokument XML Interfejs

Kod programu dostosowany został do możliwości utworzenia nowego dokumentu XML na dysku twardym lub dodawania danych do istniejącego już dokumentu XML. Dla zachowania jasności skupię się jedynie na istotnych liniach kodu, prostsze elementy zostały opisane z poziomu komentarzy w kodzie programu.

Po utworzeniu tablic tekstowych przechowujących nazwy pól rekordu oraz ich wartości możemy utworzyć nowy obiekt dokumentu XML [10] oraz jego główny element [11]. Dokumenty XML mają postać hierarchiczną, więc należy o niej pamiętać, jest ona czytelna, ale z tego samego względu dokumenty XML bywają kłopotliwe w trakcie ich tworzenia czy operowania na nich. W zależności czy dokument istnienie czy też nie, musimy utworzyć [22] lub załadować [16] jego główną gałąź, którą nazwaliśmy “dataBase”. Tworząc nowy dokument warto załączyć do niego deklarację [20] wskazującą na wersję XML oraz kodowanie pliku. Metoda AppendChild odpowiada za dołączanie elementów podrzędnych do elementów lub dokumentów XML.

Obiekt xmlElement1lvl odpowiadał będzie za cały rekord danych “dataRow” w naszym dokumencie. Po wypełnieniu rekordu przez metodę AddMyNode [29] należy pamiętać o kolejnym załączeniu rekordu najpierw do elementu głównej gałęzi [31], a następnie o załączeniu elementu gałęzi głównej do dokumentu XML [32].

Metoda AddMyNode również została utworzona przeze mnie i ułatwia znacznie proces dodawania całej serii danych jednego rekordu. Nie jest to metoda uniwersalna, gdyż tego typu metody należy dostosować do wymaganej struktury dokumentu. Dokumenty XML pozwalają na sporą dowolność w budowaniu tego typu struktur, przyczynia się to niestety do komplikowania procesu przeszukiwania dokumentów, w trakcie którego należy uwzględnić różnego typu zagnieżdżenia gałęzi.

W metodzie AddMyNode w pętli odpowiadającej ilości pól nowego rekordu tworzymy kolejny element podrzędny o nazwie wyciągniętej z odpowiedniej pozycji tablicy nazw pól elementsArray [9] oraz nową wartość tekstową elementu XML również wyciągniętą z odpowiedniego miejsca tablicy wartości pól valuesArray [10]. Następnie musimy przypisać utworzone w ten sposób pole do gałęzi rekordu [11], a do owego pola przypisać jego wartość [12]. Zwróćmy uwagę, że kolejność nie ma tutaj znaczenia, a metoda nie zwraca obiektu elementu XML i dołączenie odbywa się wewnątrz metody.

Dokumenty XML mogą być odczytywane również na różne sposoby. Odczyt bezpośrednio z obiektu przechowywanego w pamięci jest wygodny, nie zachowuje jednak formatowania w przypadku kontrolki richTextBox.

Kiedy odczytujemy dokumenty XML z dysku za pośrednictwem strumienia oraz metody odczytu tekstu ze strumienia, formatowanie pozostaje zachowane.

Dokumenty XML dzięki swojej różnorodności pozwalają na generowanie dowolnych struktur, wykorzystywanie atrybutów, które nie zostały tutaj zaprezentowane zachowując możliwie największą prostotę generowania dokumentów XML. Kolejne możliwości dokumentów XML zaprezentowane zostaną w następnych kursach razem z nieco innym podejściem do ich generowania. Dokumenty XML również mogą korzystać z rozszerzenia LINQ.

Przykładowy projekt demonstracyjny Dokumenty XML Csharp – wprowadzenie

Loading Disqus Comments ...
Loading Facebook Comments ...