Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Dalle radio a transistor ai Micro LED: il viaggio di Hisense da Qingdao al mondo intero
Dalle radio a transistor ai Micro LED: il viaggio di Hisense da Qingdao al mondo intero
Una delle realtà a maggiore crescita nel mondo dell'elettronica di consumo, Hisense Group, affonda le sue radici nella storica città portuale di Qingdao, famosa per la sua birra. Ed è proprio qui il centro nevralgico dell'espansione mondiale dell'azienda, che sta investendo massicciamente in infrastrutture e ricerca per consolidare ulteriormente la propria leadership tecnologica.
Meglio un MacBook o un PC portatile con Windows, oggi? Scenari, dubbi e qualche certezza
Meglio un MacBook o un PC portatile con Windows, oggi? Scenari, dubbi e qualche certezza
Passano gli anni, anzi i decenni, ma la domanda puntualmente riemerge fra le mail degli utenti meno esperti, alla ricerca di consigli e mossi dai più svariati motivi. Ecco le considerazioni da fare e come la pensiamo, poi ognuno acquisti quello che vuole.
realme GT7: un "flaghsip killer" concreto! La recensione
realme GT7: un "flaghsip killer" concreto! La recensione
Abbiamo provato l'ultimo smartphone di realme, il nuovo GT7. Si tratta di un device che si colloca in una fascia di mercato delicata, ovvero quella che possiamo definire medio-alta. La specifica che salta all'occhio è senza dubbio la sua batteria da 7.000 mAh e un design elegante e premium. Ma come funziona nel quotidiano? E soprattutto è davvero un Flagship Killer? Ve lo diciamo nella nostra recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-08-2003, 14:03   #1
Icedguardian
Member
 
Iscritto dal: May 2003
Messaggi: 283
java e XML

Ho fatto un piccolo prog in java che legge un file XML
solo che:

SAX parser utilizzato e' validante
Parser e': org.apache.xerces.jaxp.SAXParserImpl@127734f

Inizio parsing del file degli accounts
AccountUtente{AccountSAXHandler.startDocument()}
AccountUtente{AccountSAXHandler.startElement()}: <accounts>
AccountUtente{AccountSAXHandler.startElement()}: <account>
AccountUtente{AccountSAXHandler.startElement()}: <utente>
AccountUtente{AccountSAXHandler.startElement()}: <login>
AccountUtente{AccountSAXHandler.endElement()}: </login>
AccountUtente{AccountSAXHandler.startElement()}: <password>
AccountUtente{AccountSAXHandler.endElement()}: </password>
AccountUtente{AccountSAXHandler.startElement()}: <nome>
AccountUtente{AccountSAXHandler.endElement()}: </nome>
AccountUtente{AccountSAXHandler.startElement()}: <cognome>
AccountUtente{AccountSAXHandler.endElement()}: </cognome>
AccountUtente{AccountSAXHandler.endElement()}: </utente>
AccountMail.setSSL: false
AccountMail.setDeleteMail: true
AccountUtente{AccountSAXHandler.startElement()}: <mailAccount>
AccountUtente{AccountSAXHandler.startElement()}: <mailHost>
AccountMail.setHost: popmail.libero.it
AccountUtente{AccountSAXHandler.endElement()}: </mailHost>
AccountUtente{AccountSAXHandler.startElement()}: <mailLogin>
AccountMail.setLogin: quellocheè
AccountUtente{AccountSAXHandler.endElement()}: </mailLogin>
AccountUtente{AccountSAXHandler.startElement()}: <mailPassword>
AccountMail.setPassword: quellochetipare
AccountUtente{AccountSAXHandler.endElement()}: </mailPassword>
java.lang.NullPointerException
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:969)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:281)
at AccountUtente.newInstance(AccountUtente.java:70)
at ProvaAccounts.main(ProvaAccounts.java:22)

Fino a java.lang.NullPointerException sono msg che scrivo io per monitorare
quello che fa il prog.

Il file XML è:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE accounts SYSTEM "accounts.dtd">

<accounts>
<account accountID="a1">
<utente>
<login>elmir</login>
<password>pippo</password>
<nome>Elmir</nome>
<cognome>Muratovic</cognome>
</utente>
<mailAccount ssl="false" deleteMail="true">
<mailHost>popmail.libero.it</mailHost>
<mailLogin>quellocheè</mailLogin>
<mailPassword>quellochetipare</mailPassword>
</mailAccount>
</account>
</accounts>

Avete idea di quale potrebbe essere il problema.
Nella riga 70 di AccountUtente c'è soltanto il richiamo alla funzione di parsing del parser.
__________________
/***
* Nulla è impossibile per chi non deve farlo
***/
Icedguardian è offline   Rispondi citando il messaggio o parte di esso
Old 05-08-2003, 15:30   #2
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5705
posta il codice del costruttore di AccountUtente.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 05-08-2003, 20:14   #3
Icedguardian
Member
 
Iscritto dal: May 2003
Messaggi: 283
/*
* AccountUtente.java
*
* Created on August 5, 2003, 10:52 AM
*/

/**
*
* @author elmir
*/

import java.util.LinkedList;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.Attributes;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import java.io.File;
import java.io.IOException;

public class AccountUtente {

final static String INPUT_XML_FILE = "../xml/accounts.xml";
final static boolean DEBUG = true;

String login; //Login dell'utente
String password; //Password dell'utente
String nome; //Nome dell'utente
String cognome; //Cognome dell'utente
LinkedList accounts; //Gli account che l'utente possiede

AccountSAXHandler handler; //Handler utilizzato durante il parsing

/** Metodo che permette la creazione di AccountUtente ma soltanto se
la login e la password sono corrette (presenti nel file XML) */
static public AccountUtente newInstance(String l, String pass){

File xmlFile = new File(INPUT_XML_FILE);
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser parser = null;
spf.setValidating(true);

AccountUtente account = new AccountUtente(l);

if(DEBUG)
System.out.println("SAX parser utilizzato " + (spf.isValidating() ? "e'" : "non e'") + " validante");

try{

parser = spf.newSAXParser();

if(DEBUG)
System.out.println("Parser e': " + parser);
}catch(SAXException se){

se.printStackTrace(System.out);
System.exit(1);
}catch(ParserConfigurationException pce){

pce.printStackTrace(System.out);
System.exit(1);
}

if(DEBUG)
System.out.println("\nInizio parsing del file degli accounts");

try{

parser.parse(xmlFile, account.handler);
}catch(IOException e){

e.printStackTrace(System.out);
System.exit(1);
}catch(SAXException e){

e.printStackTrace(System.out);
System.exit(1);
}

if(account.login.compareTo(l) == 0 && account.password.compareTo(pass) == 0)
return account;
else
return null;

}

/** Creates a new instance of AccountUtente */
AccountUtente(String l) {

login = "";
handler = new AccountSAXHandler(l);
}

/**
* Classe che risponde agli eventi del parser SAX per
* prelevare le informazioni rilevanti dal file XML.
*/
class AccountSAXHandler extends DefaultHandler {

String l; //Login dell'account da cercare
String buff; //Buffer utilizzato per prelevare il contenuto degli elementi
AccountMail amAux; //AccountMail ausiliario utilizzato durante la lettura dal file

public AccountSAXHandler(String log){

l = log;
}

public void startDocument(){

if(DEBUG)
System.out.println("AccountUtente{AccountSAXHandler.startDocument()}");
}

public void endDocument(){

if(DEBUG)
System.out.println("AccountUtente{AccountSAXHandler.endDocument()}");
}

public void startElement(String uri, String localName, String qName, Attributes attr){

buff = "";

if(qName.compareTo("mailAccount") == 0){

amAux = new AccountMail();

//Valore di "ssl"
if(attr.getValue("ssl").compareTo("true") == 0)
amAux.setSSL(true);
else
amAux.setSSL(false);

//Valore di "deleteMail"
if(attr.getValue("deleteMail").compareTo("true") == 0)
amAux.setDeleteMail(true);
else
amAux.setDeleteMail(false);
}

if(DEBUG)
System.out.println("AccountUtente{AccountSAXHandler.startElement()}: <" + qName + ">");
}

public void endElement(String uri, String localName, String qName){

if(qName.compareTo("login") == 0 && buff.compareTo(l) == 0) //

login = buff;
else if(qName.compareTo("password") == 0 && login.compareTo("") != 0){

password = buff;
}else if(qName.compareTo("nome") == 0 && login.compareTo("") != 0){

nome = buff;
}else if(qName.compareTo("cognome") == 0 && login.compareTo("") != 0){

cognome = buff;
}else if(qName.compareTo("mailHost") == 0 && login.compareTo("") != 0){

amAux.setHost(buff);
}else if(qName.compareTo("mailLogin") == 0 && login.compareTo("") != 0){

amAux.setLogin(buff);
}else if(qName.compareTo("mailPassword") == 0 && login.compareTo("") != 0){

amAux.setPassword(buff);
}else if(qName.compareTo("mailAccount") == 0 && login.compareTo("") != 0){

accounts.add(amAux);
}

if(DEBUG)
System.out.println("AccountUtente{AccountSAXHandler.endElement()}: </" + qName + ">");
}

public void characters(char[] ch, int start, int leng){

buff += new String(ch, start, leng);
}

public void warning(SAXParseException spe){

System.out.println("Warning alla linea " + spe.getLineNumber());
System.out.println(spe.getMessage());
}

public void fatalError(SAXParseException spe) throws SAXException{

System.out.println("FatalError alla linea " + spe.getLineNumber());
System.out.println(spe.getMessage());
throw spe;
}
}
}


------------------
Come si vede dal commento utilizzo un metodo statico per istanziare la classe e non il costruttore in modo da non istanziarla se non c'è l'account richiesto.

H E L P
__________________
/***
* Nulla è impossibile per chi non deve farlo
***/
Icedguardian è offline   Rispondi citando il messaggio o parte di esso
Old 06-08-2003, 09:01   #4
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5705
a me funziona !

ho preso il tuo codice e tolto i riferimenti a classi che non avevo e cicla correttamente su tutto il file xml.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 06-08-2003, 09:05   #5
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5705
sei sicuro che quando chiami:

Codice:
else if(qName.compareTo("mailHost") == 0 && login.compareTo("") != 0){

amAux.setHost(buff);
}else if(qName.compareTo("mailLogin") == 0 && login.compareTo("") != 0){

amAux.setLogin(buff);
}else if(qName.compareTo("mailPassword") == 0 && login.compareTo("") != 0){

amAux.setPassword(buff);
amAux sia istanziato??
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 06-08-2003, 10:26   #6
Icedguardian
Member
 
Iscritto dal: May 2003
Messaggi: 283
Dovrebbe
adesso controllo, spero sia questo il prob.
__________________
/***
* Nulla è impossibile per chi non deve farlo
***/
Icedguardian è offline   Rispondi citando il messaggio o parte di esso
Old 06-08-2003, 11:26   #7
Icedguardian
Member
 
Iscritto dal: May 2003
Messaggi: 283
Scusate sono un idiota

Il problema era che non avevo creato la LinkedList quindi quando facevo l'add(amAux) lui giustamente si lamentava.

__________________
/***
* Nulla è impossibile per chi non deve farlo
***/
Icedguardian è offline   Rispondi citando il messaggio o parte di esso
Old 06-08-2003, 11:53   #8
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5705
infatti il problema doveva essere in qualcuna delle righe che avevo commentato per compilare
kingv è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Dalle radio a transistor ai Micro LED: il viaggio di Hisense da Qingdao al mondo intero Dalle radio a transistor ai Micro LED: il viaggi...
Meglio un MacBook o un PC portatile con Windows, oggi? Scenari, dubbi e qualche certezza Meglio un MacBook o un PC portatile con Windows,...
realme GT7: un "flaghsip killer" concreto! La recensione realme GT7: un "flaghsip killer" concr...
Oracle guida Stargate UAE: nasce il supercluster per l'IA sovrana Oracle guida Stargate UAE: nasce il supercluster...
Tutto sulla nuova Tesla Model Y: autonomia in autostrada, prova bagagliaio e dettagli Tutto sulla nuova Tesla Model Y: autonomia in au...
La Cina ha lanciato la missione Tianwen-...
La potenza di una GeForce RTX 5090 Deskt...
Hisense, il 2025 sarà a trazione ...
J Balvin festeggia 40 anni con una moto ...
Sony presenta la nuova cinepresa compatt...
Alphacool mostra sistemi di raffreddamen...
Mova V50 Ultra Complete in offerta a -26...
Nothing Phone (3a) in offerta a poco pi&...
OnlyFans meglio di Nvidia: è la società ...
SpaceX Starship: una perdita dal serbato...
Zanubis si aggiorna, e cerca di rubare i...
L'italiano Antonio Filosa alla guida di ...
Samsung lancia la prima beta di One UI 8...
Apple estende Self Service Repair agli i...
Grok, Stable Diffusion e NotebookLM fra ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:11.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www1v