Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Il nuovo Deebot X12 OmniCyclone abbina un sistema di raccolta dello sporco senza sacchetto, un rullo di lavaggio esteso e la tecnologia FocusJet per intervenire più efficacemente sulle macchie più persistenti. Un robot completo e preciso che aiuta a tenere puliti i pavimenti di casa con il minimo sforzo
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2 implementa un mocio a nastro che esegue una pulizia dettagliata del pavimento di casa, in abbinamento ad un potente motore di aspirazione della polvere: un prodotto ideale per gestire in autonomia e con grande efficacia le necessità di pulizia dei pavimenti di casa
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
MSI FORGE GK600 TKL WIRELESS: switch lineari hot-swap, tripla connettività, display LCD e 5 strati di fonoassorbimento. Ottima in gaming, a 79,99 euro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-04-2004, 13:40   #1
texerasmo
Senior Member
 
Iscritto dal: Feb 2003
Città: Formia
Messaggi: 1545
xml sax

Sono in crisi...
Qualcuno di voi sa dirmi come posso lanciare una query su un xml utilizzando il sax?


public class CountTag extends DefaultHandler {

public static void main(String[] arguments) {
if (arguments.length > 1) {
try {
CountTag ct = new CountTag(arguments[0], arguments[1]);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("errore nel file:" + e.getMessage());
}
} else {
System.out.println("Attenzione arguments non trovato");
}

}

/**
* @param xmlFile
* @param tagName
*/
public CountTag(String xmlFile, String tagName) throws IOException {
File input = new File(xmlFile);
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(false);
try {
SAXParser sax = factory.newSAXParser();

CountTagHandler cth = new CountTagHandler(tagName);
sax.parse(input, cth);
System.out.println(
"IL tag richiesto: "
+ cth.tag
+ " è stato trovato n: "
+ cth.count
+ " volte ");
//System.out.println("to string"+cth.hashCode());

} catch (ParserConfigurationException e1) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println("errore:" + e1.getMessage());

} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("errore:" + e.getMessage());
}

// TODO Auto-generated constructor stub
}
public class CountTagHandler extends DefaultHandler {
String tag;
int count = 0;
int count1 = 0;
CountTagHandler(String tagName) {
super();
tag = tagName;
}
public void startElement(
String uri,
String localName,
String qName,
Attributes attributes) {
if (qName.equals(tag))
count++;

}

/* public void characters(char[] text, int first, int length) {
String data = new String(text, first, length);

if (data.equals("ciao")) {
System.out.println("nvolte ciao"+ count2++);

}
}
*/
public void startDocument() {

System.out.println("IL tag iniziales");
}
public void setDocumentLocator(Locator loc){
System.out.println("url del file xml: " + loc.getSystemId());

}

}

}

A questa classe gli passo due par uno il nome del file xml e l'altro il tag da cercare.
Ora io volevo fare un query sul contenuto del tag..
Sapete dirmi come posso fare?

Grazie
__________________
Il portale delle infomazioni di Latina e Provincia
Giralatina.it e’ nato con il preciso intento di promuovere varie attività che si svolgono nella provincia di Latina
http://www.giralatina.it
Il Blog dei Pendolari
http://www.giralatina.it/blog/mybloggie/index.php
texerasmo è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2004, 17:26   #2
texerasmo
Senior Member
 
Iscritto dal: Feb 2003
Città: Formia
Messaggi: 1545
per chi deve fare una cosa simile..

public class CountTag extends DefaultHandler {
int count3 = 0;
boolean boolPadre;
boolean boolFiglio1;
boolean boolFiglio2;
boolean boolFiglio3;
long inizio, fine;
public static void main(String[] arguments) {
if (arguments.length > 1) {
try {
CountTag ct = new CountTag(arguments[0], arguments[1]);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("errore nel file:" + e.getMessage());
}
} else {
System.out.println("Attenzione arguments non trovato");
}

}

/**
* @param xmlFile
* @param tagName
*/
public CountTag(String xmlFile, String tagName) throws IOException {
File input = new File(xmlFile);
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(false);
try {
SAXParser sax = factory.newSAXParser();

CountTagHandler cth = new CountTagHandler(tagName);
sax.parse(input, cth);
System.out.println(
"IL tag richiesto: "
+ cth.tag
+ " è stato trovato n: "
+ cth.count
+ " volte ");
System.out.println("risultato query: " + count3);
//System.out.println("to string"+cth.hashCode());

} catch (ParserConfigurationException e1) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println("errore:" + e1.getMessage());

} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("errore:" + e.getMessage());
}

// TODO Auto-generated constructor stub
}
public class CountTagHandler extends DefaultHandler {
String tag;
int count = 0;
int count1 = 0;
CountTagHandler(String tagName) {
super();
tag = tagName;
}
public void startElement(
String uri,
String localName,
String qName,
Attributes attributes) {
String testo = null;

if (qName.equals(tag))
{
boolPadre = true;
count++;
}
else if (qName.equals("figlio1")) {

boolFiglio1 = true;
} else if (qName.equals("figlio2")) {

boolFiglio2 = true;
} else if (qName.equals("figlio3")) {

boolFiglio3 = true;
}
// System.out.println("qName: " + qName);
// System.out.println("Padre: " + boolPadre);
// System.out.println("Filgio1 :" + boolFiglio1);
// System.out.println("Filgio2 :" + boolFiglio2);
// System.out.println("Filgio3 :" + boolFiglio3);

//testo = attributes.getValue(0);
// if (testo!=null && testo.equals("pippone")) {
// count3++;
// System.out.println("Valore teso" + testo);
// }

}

public void endElement(String name,String name2,String name3) {

//System.out.println("tag in end element: " + name3);

if (name3.equals(tag)) {
if (boolPadre)
count3++;
boolPadre = false;
} else if (name3.equals("figlio1")) {
boolFiglio1 = false;
} else if (name3.equals("figlio2")) {
boolFiglio2 = false;
} else if (name3.equals("figlio3")) {
boolFiglio3 = false;
}

}


public void characters(char[] text, int first, int length) {
String data = new String(text, first, length);

/*if (bool && (data.startsWith("ciao ") || data.endsWith(" ciao") || data.equalsIgnoreCase("ciao"))) {
count3++;
}
*/
if (boolPadre) {

if (boolFiglio1) {

if (!data.equals("MINOnontifidi"))
boolPadre = false;
} else if (boolFiglio2) {

if (!data.equals("ERASMO"))
boolPadre = false;
} else if (boolFiglio3) {

if (!data.equals("RAFF"))
boolPadre = false;
//else count3++;
}

}
// System.out.println("dato: " + data + " boolPadre: " + boolPadre);

}

public void startDocument() {

System.out.println("IL tag iniziales");
inizio = System.currentTimeMillis();

}

public void endDocument() {

fine = System.currentTimeMillis();
System.out.println("Tempo Attesa risposta in milli secondi: " + (fine - inizio));
}

public void setDocumentLocator(Locator loc) {
System.out.println("url del file xml: " + loc.getSystemId());

}

}

}
Questa classe mi fa le seguenti cose:
a) Stampa il tempo di esecuzione
b) Stampa il numero delle volete che trova il tag passato da paarmetro
c) Stampa il numero delle volte dove egue la seguente query:

avendo un xml fatto in questo modo
<root>
<padre>
<figlio1>
<figlio2>
<figlio3>


Lanciano la seguente query
dove avendo un tag padre e il filgio1 = MINO e figlio2=ERASMO e figlio3=RAFF
restituisce il numero della query corrispondente.

ciao a tutti
__________________
Il portale delle infomazioni di Latina e Provincia
Giralatina.it e’ nato con il preciso intento di promuovere varie attività che si svolgono nella provincia di Latina
http://www.giralatina.it
Il Blog dei Pendolari
http://www.giralatina.it/blog/mybloggie/index.php
texerasmo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet Ecovacs Deebot X12 OmniCyclone: lava grazie a Fo...
Narwal Flow 2: la pulizia di casa con un mocio a nastro Narwal Flow 2: la pulizia di casa con un mocio a...
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless Tastiera gaming MSI GK600 TKL: switch hot-swap, ...
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Huawei punta sul canale europeo: per il ...
Ubuntu 26.04: le GPU guadagnano il 17% i...
La Commissione UE registra l'iniziativa ...
SSD troppo cari? La soluzione alla crisi...
Anteprima mondiale Hyundai IONIQ 3: segm...
Fintool sbarca su Microsoft 365: arrivan...
Hanno chiesto 1 dollaro per salvare un M...
Arriva AgentExchange, il marketplace di ...
Blizzard fa chiudere Turtle WoW: perché ...
Claude Desktop e la modifica silenziosa ...
Blue Origin ha mostrato gli interni del ...
Linux alla pari di Windows in gioco: con...
Il rientro del secondo stadio del razzo ...
Il controller ufficiale Microsoft per Xb...
DJI Power 1000 Mini: la power station da...
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: 19:18.


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