Powinien powstać plik, który generuje 3 gałęzie film, a generuje tylko jedną. Miejsca generuje prawidłowo. Tak wygląda kod (dodaje wszystkie elementy, może błąd siedzi poza klasą do xmla):
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
class Zapiszxml {
public String _tytul, _imie, _nazwisko, _rezerwacja;
public int _nr_miejsca;
public void Zapiszxml( Kino kino){
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element rootElement = doc.createElement("Kino");
doc.appendChild(rootElement);
Element firstElement = doc.createElement("Film");
rootElement.appendChild(firstElement);
Element secondElement = doc.createElement("Miejsce");
firstElement.appendChild(secondElement);
for (int i = 0; i < kino.wszystkie_filmy.length; i++){
_tytul = kino.wszystkie_filmy[i].tytul;
firstElement.setAttribute("Nazwa", _tytul);
for(int j = 0; j < kino.wszystkie_filmy[i].wszystkie_miejsca.length; j++){
_nr_miejsca = kino.wszystkie_filmy[i].wszystkie_miejsca[j].numer;
secondElement.setAttribute("Numer", Integer.toString(_nr_miejsca));
Element imie = doc.createElement("Imie");
_imie = kino.wszystkie_filmy[i].wszystkie_miejsca[j].imie;
imie.appendChild(doc.createTextNode(_imie));
secondElement.appendChild(imie);
Element nazwisko = doc.createElement("Nazwisko");
_nazwisko = kino.wszystkie_filmy[i].wszystkie_miejsca[j].nazwisko;
nazwisko.appendChild(doc.createTextNode(_nazwisko));
secondElement.appendChild(nazwisko);
Element rezerwacja = doc.createElement("Rezerwacja");
if (kino.wszystkie_filmy[i].wszystkie_miejsca[j].rezerwacja == true){
rezerwacja.appendChild(doc.createTextNode("Tak"));
}
else{
rezerwacja.appendChild(doc.createTextNode("Nie"));
}
secondElement.appendChild(rezerwacja);
}
}
//firstElement.setAttribute("Nazwa", "Terrorysci w Malmo");
//secondElement.setAttribute("Numer", "13");
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("save.xml"));
// StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
System.out.println("Plik został zapisany pomyślnie!");
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
} catch (TransformerException tfe) {
tfe.printStackTrace();
}
}
}
import java.util.Scanner;
class Kino {
public
final int ilosc_filmow = 3;
Film[] wszystkie_filmy = new Film[ilosc_filmow];
int ilosc_dodanych_filmow,
wybrany_film;
public
Kino(){
wybrany_film = 0;
ilosc_dodanych_filmow = 0;
}
int zwroc_ilosc_dodanych_filmow(){
return ilosc_dodanych_filmow;
}
void wyswietl_wszystkie_miejsca(){
for(int i = 0; i < ilosc_dodanych_filmow; i++){
wszystkie_filmy[i].wypisz();
wszystkie_filmy[i].wyswietl_wszystkie_miejsca();
}
}
void wyswietl_wolne_miejsca(){
for(int i = 0; i < ilosc_dodanych_filmow; i++){
wszystkie_filmy[i].wypisz();
wszystkie_filmy[i].wyswietl_wolne_miejsca();
}
}
void wyswietl_zarezerwowane_miejsca(){
for(int i = 0; i < ilosc_dodanych_filmow; i++){
wszystkie_filmy[i].wypisz();
wszystkie_filmy[i].wyswietl_zarezerwowane_miejsca();
}
}
void dodaj_rezerwacje(){
System.out.print("Dodaj rezerwacje:\n");
wyswietl_wszystkie_filmy();
wybierz_film();
if(wybrany_film != 0)
{
wszystkie_filmy[wybrany_film-1].dodaj_rezerwacje();
}
}
void anuluj_rezerwacje(){
System.out.print("Anuluj rezerwacje:\n");
wyswietl_wszystkie_filmy();
wybierz_film();
if(wybrany_film != 0)
{
wszystkie_filmy[wybrany_film-1].anuluj_rezerwacje();
}
}
void sprawdz_miejsce(){
System.out.print("Sprawdz rezerwacje:\n");
wyswietl_wszystkie_filmy();
wybierz_film();
if(wybrany_film != 0)
{
wszystkie_filmy[wybrany_film-1].sprawdz_miejsce();
}
}
void dodaj_film(String _tytul){
if(ilosc_dodanych_filmow<ilosc_filmow)
{
wszystkie_filmy[ilosc_dodanych_filmow] = new Film(_tytul);
ilosc_dodanych_filmow++;
System.out.print("Dodano film " + _tytul + "\n");
}
else
{
System.out.print("Maksymalna liczba filmow dodana.\n");
}
}
void wybierz_film(){
System.out.print("Wybierz numer filmu:\n");
System.out.print("(lub 0 by wyjść)\n");
Scanner odczyt = new Scanner(System.in);
wybrany_film = odczyt.nextInt();
odczyt.close();
if(wybrany_film < 0 || wybrany_film > ilosc_dodanych_filmow){
if(wybrany_film != 0)
{
wybrany_film = 0;
System.out.print("Nie ma takiego filmu");
}
}
}
void wyswietl_wszystkie_filmy(){
int tmpi;
for(int i = 0; i < ilosc_filmow; i++){
tmpi = i + 1;
System.out.print("Film nr."+ tmpi + " - ");
wszystkie_filmy[i].wypisz();
}
}
}
import java.util.Scanner;
class Film {
public
String tytul;
final int ilosc_miejsc = 30;
Miejsce[] wszystkie_miejsca = new Miejsce[ilosc_miejsc];
int wybrane_miejsce = 0,
ilosc_dodanych_filmow;
public
Film(){
tytul = "";
for(int i = 0; i < ilosc_miejsc; i++){
wszystkie_miejsca[i] = new Miejsce("","",i+1, false);
}
}
Film(String _tytul){
tytul = _tytul;
for(int i = 0; i < ilosc_miejsc; i++){
wszystkie_miejsca[i] = new Miejsce("","",i+1, false);
}
}
void wyswietl_wszystkie_miejsca(){
for(int i = 0; i < ilosc_miejsc; i++){
wszystkie_miejsca[i].wypisz();
}
System.out.print("Wszystkich miejsc :" + ilosc_miejsc + "\n");
}
void wyswietl_wolne_miejsca(){
int ilosc = 0;
for(int i = 0; i < ilosc_miejsc; i++){
if(wszystkie_miejsca[i].rezerwacja==false){
wszystkie_miejsca[i].wypisz();
ilosc++;
}
}
System.out.print("Wszystkich miejsc :" + ilosc + "\n");
}
void wyswietl_zarezerwowane_miejsca(){
int ilosc = 0;
for(int i = 0; i < ilosc_miejsc; i++){
if(wszystkie_miejsca[i].rezerwacja==true){
wszystkie_miejsca[i].wypisz();
ilosc++;
}
}
System.out.print("Wszystkich miejsc :" + ilosc + "\n");
}
void dodaj_rezerwacje(){
System.out.print("Dodaj rezerwację:\n");
wyswietl_wolne_miejsca();
wybierz_miejsce();
if(wybrane_miejsce > 0){
wszystkie_miejsca[wybrane_miejsce-1].rezerwuj();
}
System.out.print("Rezerwacja dodana.\n");
}
void wybierz_miejsce(){
System.out.print("Wybierz numer miejsca:\n");
System.out.print("(0 by wrócić)\n");
Scanner odczyt = new Scanner(System.in);
wybrane_miejsce = odczyt.nextInt();
odczyt.close();
if ((wybrane_miejsce < 0) || (wybrane_miejsce > ilosc_miejsc)){
if (wybrane_miejsce != 0){
wybrane_miejsce = 0;
System.out.print("Nie ma takiego miejsca\n");
}
}
}
void sprawdz_miejsce(){
System.out.print("Sprawdz rezerwacje:\n");
wybierz_miejsce();
if(wybrane_miejsce != 0){
wszystkie_miejsca[wybrane_miejsce-1].wypisz();
}
System.out.print("Wpisz cokolwiek i wciśnij enter by powrócić\n");
}
void anuluj_rezerwacje(){
System.out.print("Anuluj rezerwację:\n");
wyswietl_zarezerwowane_miejsca();
wybierz_miejsce();
if(wybrane_miejsce > 0){
wszystkie_miejsca[wybrane_miejsce-1].anuluj_rezerwacje();
}
System.out.print("Rezerwacja anulowana.\n");
}
void wypisz(){
System.out.print("Tytul: " + tytul + "\n");
}
}
import java.util.Scanner;
class Miejsce {
public
String imie,
nazwisko;
int numer;
Boolean rezerwacja;
Miejsce(){
imie ="";
nazwisko ="";
numer = 0;
rezerwacja = false;
}
Miejsce(String _imie, String _nazwisko, int _numer, Boolean _rezerwacja){ //Konstruktor
imie = _imie;
nazwisko = _nazwisko;
numer = _numer;
rezerwacja = _rezerwacja;
}
void rezerwuj(){
if (rezerwacja == true){
System.out.print("Miejsce jest już zarezerwowane.\n");
}
else{
Scanner odczyt = new Scanner(System.in);
System.out.print("Podaj imię.\n");
imie = odczyt.nextLine();
System.out.print("Podaj nazwisko.\n");
nazwisko = odczyt.nextLine();
odczyt.close();
rezerwacja = true;
System.out.print("Miejsce "+ numer + " zostało zarezerwowane dla: "
+ imie + " " + nazwisko +"\n");
}
}
void anuluj_rezerwacje(){
if (rezerwacja == true){
imie = "";
nazwisko = "";
rezerwacja = false;
System.out.print("Rezerwacja anulowana.\n");
}
else{
System.out.print("Nie ma takiej rezerwacji.\n");
}
}
void wypisz(){
if (rezerwacja == true){
System.out.print("Numer: " + numer + " - " + imie + " " + nazwisko + "\n");
}
else{
System.out.print("Numer: " + numer + " - miejsce wolne\n");
}
}
};