Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    10

    Deserializzare da XML a Java

    Ciao a tutti! ho un problema con la deserializzazione da XML a oggetto Java. Ho un file xml con uno schema xsd contenete dei parametri di configurazione e vorrei deserializzarlo in un oggetto java della classe ConfigurazioneParametri in modo da poterli utilizzare nel mio programma. Quando vado ad eseguire il programma pero netbeans mi da questo errore:

    Caused by: com.thoughtworks.xstream.converters.reflection.Abs tractReflectionConverter$UnknownFieldException: No such field ConfigurazioneParametri.ParametriEconomici
    ---- Debugging information ----
    field : ParametriEconomici
    class : ConfigurazioneParametri
    required-type : ConfigurazioneParametri
    converter-type : com.thoughtworks.xstream.converters.reflection.Ref lectionConverter
    path : /ConfigurazioneParametri/ParametriEconomici
    version : 1.4.7
    -------------------------------

    Posto il codice, grazie a tutti

    file configurazione.xml
    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <ConfigurazioneParametri>
        <ParametriEconomici>
            <costoConsegna>1</costoConsegna>
            <arcoTemporale>2017</arcoTemporale>
        </ParametriEconomici>
    </ConfigurazioneParametri>
    file configurazione.xsd
    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="ConfigurazioneParametri">
          <xs:complexType>
            <xs:sequence>
                <xs:element name="ParametriEconomici">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="costoConsegna" type="xs:string"/>
                            <xs:element name="arcoTemporale" type="xs:string"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
          </xs:complexType>
         </xs:element>
    </xs:schema>
    file ParametriEconomici.java
    codice:
    public class ParametriEconomici implements Serializable{
        public String costoConsegna;
        public String arcoTemporale;
        
        public ParametriEconomici(String costoConsegna, String arcoTemporale){
            this.costoConsegna = costoConsegna;
            this.arcoTemporale = arcoTemporale;
        }
    }
    file ConfigurazioneParametri.java
    codice:
    public class ConfigurazioneParametri implements Serializable{
        public ParametriEconomici pe;
        
        public ConfigurazioneParametri(String xml){
            ConfigurazioneParametri cp = (ConfigurazioneParametri)(new XStream()).fromXML(xml);
            pe = cp.pe;   
        }
        
        public static ConfigurazioneParametri leggiDatiDalFileDiConfigurazione(){
            String x = null;
            try{
                x = new String(Files.readAllBytes(Paths.get("configurazione.xml")));
            }catch(IOException e){
                e.printStackTrace();
            }
            ConfigurazioneParametri cp = new ConfigurazioneParametri(x);
            return cp;
        }
    }
    La chiamata dal metodo start e:

    ConfigurazioneParametri cp = ConfigurazioneParametri.leggiDatiDalFileDiConfigur azione();
    Ultima modifica di Trispo; 27-08-2017 a 17:30

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    I problemi che hai esposto, probabilmente sono dovuti ad una scarsa conoscenza di XStream. Tanto per dirne una: XStream fornisce un comodo fromXML(File file). Mentre invece facendo quel Files.readAllBytes hai tirato su un array di byte e l'hai passato al costruttore String(byte[] bytes) che usa il charset di default e a seconda di quale sistema hai, potrebbe essere appropriato oppure no.

    Documentati bene su XStream. Se hai dubbi chiedi. Non uso normalmente XStream ma se vuoi un esempio, posso anche metterlo giù.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.