Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test Stiga HT 300e Kit, tagliasiepi con doppia batteria per dire addio alla benzina
Test Stiga HT 300e Kit, tagliasiepi con doppia batteria per dire addio alla benzina
Completiamo la cura del nostro giardino con il tagliasiepi, e ancora una volta abbiamo provato un prodotto di Stiga. Il kit con doppia batteria si conferma campione di durata, oltre che di qualità
ASUS ROG Zephyrus G14: il notebook ibrido molto potente
ASUS ROG Zephyrus G14: il notebook ibrido molto potente
Dimensioni compatte che si abbinano ad una elevatissima potenza di calcolo, grazie al processore AMD Ryzen AI 9 HX 370 e alla scheda video NVIDIA GeForce RTX 5080: questo è il cuore di ASUS ROG Zephyrus G14, un notebook che garantisce prestazioni elevatissime con giochi e produttività personale ma che è anche facilmente trasportabile in ogni ambiente
DJI Mavic 4 Pro: sblocca un nuovo livello per le riprese aeree
DJI Mavic 4 Pro: sblocca un nuovo livello per le riprese aeree
DJI Mavic 4 Pro porta in dote il nuovo Stabilizzatore Infinity a 360°, che permette nuovi gradi di libertà nelle riprese aeree. Non solo può ruotare a 360 gradi, ma abilita anche riprese dal basso, con inclinazione della videocamera fino a 70°. Il triplo modulo di ripresa offre una fotocamera Hasselblad 28mm con sensore da 100 megapixel e video 6K, ma si spinge fino al teleobiettivo da 50 megapixel e 168mm di focale equivalente. Nuova avionica e batteria per voli fino a 51 minuti di autonomia. La nostra prova
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


Test Stiga HT 300e Kit, tagliasiepi con doppia batteria per dire addio alla benzina Test Stiga HT 300e Kit, tagliasiepi con doppia b...
ASUS ROG Zephyrus G14: il notebook ibrido molto potente ASUS ROG Zephyrus G14: il notebook ibrido molto ...
DJI Mavic 4 Pro: sblocca un nuovo livello per le riprese aeree DJI Mavic 4 Pro: sblocca un nuovo livello per le...
Idrogeno verde in Europa: nuovi studi prevedono costi ben superiori alle aspettative Idrogeno verde in Europa: nuovi studi prevedono ...
Mario Kart World lancia Switch 2: la magia Nintendo ora in 4K Mario Kart World lancia Switch 2: la magia Ninte...
Maggio è il mese migliore dell'ul...
La Consob avverte: 'Attenti a chi promet...
Le chat di Nintendo Switch 2 sono regist...
Mistero Bitcoin: Ross Ulbricht riceve 31...
Le nuove cinture di sicurezza Volvo usan...
Nuki Smart Lock Pro con Wi-Fi e supporto...
OPPO e Volkswagen insieme sul 5G. La ris...
Chrome è più veloce che ma...
Apple Mac Mini con chip M4 scende ancora...
Tesla affonda a Wall Street: -30% nel 20...
iOS 18 è presente sull'82% di tut...
iPhone 17 a prezzi mai visti prima: camb...
Il monitor MSI PRO da 27 pollici a 120Hz...
Il tutorial di Switch 2 costa 10€, ma co...
L'iPhone senza porte di ricarica potrebb...
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: 17:59.


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