XML w Javie
Ten artykuł ma przybliżyć sposób wczytywania i zapisywania plików w formacie XML z poziomu języka Java.
Istnieje kilka bibliotek i metod, które mogą do tego służyć. Najłatwiejszą i najwygodniejszą jest biblioteka JDOM.
Instalacja (w NetBeans)
Po rozpakowaniu paczki pobranej ze strony projektu JDOM (http://www.jdom.org/dist/binary/jdom-1.1.2.tar.gz) w katalogu build znajdują się pliki:
- jdom-1.1.2.jar – biblioteka JDOM
- jdom-1.1.2-sources.jar – źródła biblioteki
- jdom-1.1.2-javadoc.jar – dokumentacja w formacie Javadoc
Instalacja ad-hoc
Aby jednorazowo użyć JDOM w projekcie można dodać do bibliotek plik jdom-1.1.2.jar (Kliknięcie prawym przyciskiem myszy na pozycji Libraries w drzewie projektu, a następnie opcja Add JAR/Folder)
Instalacja stała
Jeżeli zamierzamy używać JDOM w wielu projektach i/lub chcemy, aby środowisko NetBeans w ramach podpowiedzi przy wpisywaniu kodu prezentowało opisy klas i metod z dokumentacji Javadoc, można na stałe dołączyć JDOM do bibliotek zarejestrowanych w środowisku NetBeans. Służy do tego opcja Tools/Libraries>New Library.... W zakładkach Classpath, Sources, Javadoc dodajemy odpowiednio pliki jdom-1.1.2.jar, jdom-1.1.2-sources.jar, jdom-1.1.2-javadoc.jar(należy użyć przycisku Add ZIP/Folder...).
Po zarejestrowaniu biblioteki w NetBeans można dodać ją do projektu opcją Add library(po kliknięciu RMB na pocyzji Libraries w drzewie projektu.
Przykład użycia biblioteki JDOM
Problem
Przypuśćmy, że mamy klasy Gwiazda i Film służące do przechowywania informacji o gwiazdach filmowych i filmach, w których wystąpiły.
public class Gwiazda {
private String nazwisko;
private List<String> adresy = new ArrayList<String>();
private List<Film> filmy = new ArrayList<Film>();
Gwiazda(String nazwisko, String adres) {
this.nazwisko = nazwisko;
this.adresy.add(adres);
}
@Override
public String toString() {
String res = "Nazwisko: " + this.nazwisko + "\n";
for (String adres : this.adresy) {
res += "Adres: " + adres + "\n";
}
if (this.filmy.size() > 0) {
res += "Wystapil(a) w:\n";
for (Film film : this.filmy) {
res += film + "\n";
}
}
return res;
}
}