XML encoder i decoder

0

Witam,

mam problem otóż zapisuj mi sie plik xml, ale niestety nie odczytuje. Chce zapisać dane z 2 map. Proszę o pomoc.

XMLDecoder decoder = null;
        try {
            FileInputStream fos=new FileInputStream("C:/my.xml");
            XMLDecoder e=new XMLDecoder(new BufferedInputStream(fos));            
                    e.readObject();
                    e.close();
                } catch (FileNotFoundException e) {
                    System.out.println("File not found");
                } finally {
                if (decoder != null) 
                    decoder.close();
                }
XMLEncoder encoder = null;
                try {
                    FileOutputStream fos=new FileOutputStream("C:/my.xml");
                    XMLEncoder e=new XMLEncoder(new BufferedOutputStream(fos));            
                    e.writeObject(mapa1);
                    e.writeObject(mapa2);
                    e.close();
                } catch (FileNotFoundException e) {
                    System.out.println("File not found");
                } finally {
                if (encoder != null) 
                    encoder.close();
                }
0

Nie odczytuje, tzn. program się wywala?

XMLDecoder decoder = null;
        try {
            FileInputStream fos=new FileInputStream("C:/my.xml");
            XMLDecoder e=new XMLDecoder(new BufferedInputStream(fos));            
                    e.readObject();
                    e.close();
                } catch (FileNotFoundException e) {
                    System.out.println("File not found");
                } finally {
                if (decoder != null) 
                    decoder.close();
                }
 

e.readObject() - odczytujesz obiekt, ale do niczego go nie przypisujesz;
poza tym do czego ma służyć decoder?

0

Decoder ma sluzyc do odczytywania z pliku XML. Chyba, ze mozna to jakos inaczej zrobic? Wydawało się się, że jak sie zapisuje do pliku XML to wszystko widac jaki obiekt nalezy do jakiej klasy itp., wiec dlatego e.readObject();

0

Powinieneś mieć coś w stylu: mapa = (Mapa)e.readObject(); (nie wiem, jaki tam obiekt serializujesz). Poza tym, jak już napisałem, najpierw tworzysz obiekt XMLDecoder decoder = null (encoder tak samo) a potem w bloku try/catch w ogóle z niego nie korzystasz, za to tworzysz kolejny obiekt XMLDecoder e = new XMLDecoder(), po czym w finally nie zamykasz e, tylko ten nigdzie nieużywany decoder.

1 użytkowników online, w tym zalogowanych: 0, gości: 1