Java XMLEncoder problema
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 2 di 2

Discussione: Java XMLEncoder problema

Cambio titolo
  1. #1
    ...ros1k... L'avatar di <TheShop>Evoc Thurner
    Registrato il
    10-03
    Località
    La Spezia
    Messaggi
    7.557

    Java XMLEncoder problema

    Ho creato due classicine di prova:

    Codice:
    Tutti gli import del caso:
    
    Spoiler:
    import java.util.*; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.*; import java.net.*; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.beans.Encoder; import java.beans.XMLEncoder; import java.beans.XMLDecoder; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Text; import org.*; import org.w3c.*; import org.w3c.dom.*;
    public class proveCreazioneXML{ public static void main(String [] args)throws Exception{ classeDiProva c = new classeDiProva(10); XMLEncoder e = new XMLEncoder( new BufferedOutputStream( new FileOutputStream("Test.xml"))); e.writeObject(c); e.flush(); e.close(); } }
    e
    Codice:
    import java.io.Serializable;
    import java.util.*;
    
    
    public class classeDiProva implements Serializable{
      private int numero;
     
        public  classeDiProva(int a){
            
              this.numero= a;
            }    
        
    }
    compila egregiamente, poi vado a eseguire e mi da il seguente output:
    Codice:
    java -ea proveCreazioneXML 
    java.lang.InstantiationException: classeDiProva
    Continuing ...
    java.lang.Exception: XMLEncoder: discarding statement XMLEncoder.writeObject(classeDiProva);
    Continuing ...
    In teoria dovrebbe darmi:
    Codice:
    <classeDiProva>
       <int>10</int>
    </classeDiProva>
    Cosa posso aver sbagliato?

  2. #2
    ...ros1k... L'avatar di <TheShop>Evoc Thurner
    Registrato il
    10-03
    Località
    La Spezia
    Messaggi
    7.557
    come dice paolo bitta chi fa da s&#233;, fa da s&#233;...
    ho trovato la soluzione che avevo sotto il naso ma non vedevo:
    la classe XMLEncoder, come quella XMLDecoder, permettono di scrivere Oggetti direttamente in XML, come object output stream permette di bytizzare object, solo che questi oggetti devono essere definiti come JavaBeans, ovvero con costruttore nullo, i cui attributi vengono modificati tramite l'uso di set e get.
    quindi &#232; stato sufficiente modificare la mia classe di prova come segue:
    Codice:
    import java.io.Serializable;
    import java.util.*;
    
    
    public class classeDiProva implements Serializable{
        private int numero ; 
        private String stringa;
        private boolean si;
        public  classeDiProva(){
            
            }    
        
        public void setNumero(int a){this.numero = a;}
        public void setStringa(String b){this.stringa = b; }
        public void setSi(boolean c){this.si=c;}
        public String getStringa(){return stringa;}
        public int getNumero(){return numero;}
        public boolean getSi(){return si;}
    }
    e il codice della classe che scrive su xml come segue:

    Codice:
    Tutti gli import del caso:
    
    Spoiler:
    import java.util.*; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.*; import java.net.*; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.beans.Encoder; import java.beans.XMLEncoder; import java.beans.XMLDecoder; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Text; import org.*; import org.w3c.*; import org.w3c.dom.*;
    public class proveCreazioneXML{ public static void main(String [] args)throws Exception{ classeDiProva c = new classeDiProva(); c.setNumero(10); c.setSi(true); c.setStringa("ciao"); XMLEncoder e = new XMLEncoder( new BufferedOutputStream( new FileOutputStream("Test.xml"))); e.writeObject((Object)c); e.flush(); e.close(); } }
    per ottenere il seguente XML:
    Codice:
    <?xml version="1.0" encoding="UTF-8"?> 
    <java version="1.6.0_06" class="java.beans.XMLDecoder"> 
     <object class="classeDiProva"> 
      <void property="numero"> 
       <int>10</int> 
      </void> 
      <void property="si"> 
       <boolean>true</boolean> 
      </void> 
      <void property="stringa"> 
       <string>ciao</string> 
      </void> 
     </object> 
    </java>

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •