Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-05-2007, 11:28   #1
Dostybear
Member
 
Iscritto dal: Oct 2006
Messaggi: 197
[JAVA] Parser DTD

Ciao!
Devo realizzare in Java una classe che possa analizzare un file contenente la descrizione di un DTD xml, e che quindi riesca a identificare i nomi di elementi e attributi per poi inserirli in una struttura già definita in un'altra classe. Il problema è che non so da dove iniziare per fare il parsing del documento.
Ogni suggerimento è ben accolto grazie in anticipo!
Dostybear è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 09:55   #2
akyra
Senior Member
 
L'Avatar di akyra
 
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
beh....diciamo che stai citando circa un oceano di concetti...prima di tutto costruire un parser non è una cosa semplicissimissima. Hai detto che il lunguaggio usato è xml, che è un linguaggio libero dal contesto definito da una grammatica LR(k), cioè a derivazioni right-most con k simboli di lookahead...
magari questi concetti non ti serviranno, però per lo meno dovresti sapere che lo scopo di un parser è quello di costruire un albero di parsing, cioè un albero che sia in grado di descrivere la struttura sintattica di ogni frase del linguaggio. Per fare ciò con ogni probabilità dovrai costruirti un automa a stati finiti deterministico in grado di riconoscere ogni stringa che fa parte del linguaggio...
dovresti essere più preciso, e dirmi magari quali siano le possibili limitazioni del progetto che devi fare, in modo da evitare di farti perdere tempo su concetti che non ti servono...

intanto magari ti invio questo link

http://www.latoserver.it/java/parsing-XML/

spero possa esserti utile ai fini di quello che (penso) tu debba fare
__________________

Ultima modifica di akyra : 02-05-2007 alle 10:04.
akyra è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 11:26   #3
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
spè..
la devi realizzare tu per forza per qualche progetto dell'univ o puoi anke usare librerie già esistenti..
perchè di librerie per la validazione degli xml con una dtd ce ne stanno a bizzeffe
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 17:21   #4
Dostybear
Member
 
Iscritto dal: Oct 2006
Messaggi: 197
Si, forse sono stato un pò troppo vago
Allora, innanzitutto devo realizzarlo io senza utilizzare librerie esterne; lo scopo non è quello della validazione dell'xml, ma più semplicemente deve riuscire a identificare i nomi di elementi ed attributi e le relazioni tra i diversi elementi. Al link avevo già dato un'occhiata, ma nel mio caso dovrei analizzare il contenuto di un dtd, non di un documento xml.
Per fare un esempio dal dtd seguente
Codice:
<!ELEMENT impiegati (impiegato)*>
<!ELEMENT impiegato (nome, email, url?)>
<!ATTLIST impiegato id CDATA #REQUIRED>
<!ELEMENT nome (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT url EMPTY>
<!ATTLIST url href CDATA #REQUIRED>
a me interessa sapere che ci sono 4 elementi, con i loro nomi; che impiegati è composto da impiegato che a sua volta è composto da nome, email e url; inoltre che url ha un attributo href.
Dostybear è offline   Rispondi citando il messaggio o parte di esso
Old 04-05-2007, 09:11   #5
Dostybear
Member
 
Iscritto dal: Oct 2006
Messaggi: 197
Up!
Dostybear è offline   Rispondi citando il messaggio o parte di esso
Old 04-05-2007, 10:13   #6
akyra
Senior Member
 
L'Avatar di akyra
 
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
Quote:
Originariamente inviato da Dostybear Guarda i messaggi
Si, forse sono stato un pò troppo vago
Allora, innanzitutto devo realizzarlo io senza utilizzare librerie esterne; lo scopo non è quello della validazione dell'xml, ma più semplicemente deve riuscire a identificare i nomi di elementi ed attributi e le relazioni tra i diversi elementi. Al link avevo già dato un'occhiata, ma nel mio caso dovrei analizzare il contenuto di un dtd, non di un documento xml.
Per fare un esempio dal dtd seguente
Codice:
<!ELEMENT impiegati (impiegato)*>
<!ELEMENT impiegato (nome, email, url?)>
<!ATTLIST impiegato id CDATA #REQUIRED>
<!ELEMENT nome (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT url EMPTY>
<!ATTLIST url href CDATA #REQUIRED>
a me interessa sapere che ci sono 4 elementi, con i loro nomi; che impiegati è composto da impiegato che a sua volta è composto da nome, email e url; inoltre che url ha un attributo href.
quello che devi costruirti è un automa a stati finiti deterministico che faccia l'analisi lessicale del DTD....se non hai idea di cosa stia dicendo devi prima documentarti su questo....però mi sembra molto strano che tu debba costruirti un algoritmo del genere senza avere nozioni di questo tipo...
__________________
akyra è offline   Rispondi citando il messaggio o parte di esso
Old 04-05-2007, 10:20   #7
Dostybear
Member
 
Iscritto dal: Oct 2006
Messaggi: 197
Nono, so di cosa stai parlando. Però pensavo che, visto che lo comunque scopo è piuttosto semplice (non devo certo scrivere un compilatore ), ci potesse essere qualche modo più veloce per realizzarlo.
Ora ho provato a buttar giù una classe per dividere in token il file di testo (il dtd) in input.
Dostybear è offline   Rispondi citando il messaggio o parte di esso
Old 04-05-2007, 10:50   #8
akyra
Senior Member
 
L'Avatar di akyra
 
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
magari puoi evitare di scrivere un analizzatore lessicale complicato se fai delle ipotesi molto forti sul DTD che devi analizzare....ma devono essere proprio forti, e quello che ne uscirebbe sarebbe abbastanza grezzo e poco dinamico...
ad esempio se ipotizzi che dopo "<!ELEMENT" ci sia uno spazio vuoto e il nome dell'elemento, allora puoi usare le funzioni sulle stringhe che tagliano/cercano sottostringhe all'interno di altre stringhe...così, ad esempio ti verrebbe un codice del tipo:

se la riga letta inizia per "<!ELEMENT" allora taglia "<!ELEMENT" dalla stringa, e memorizza la stringa successiva racchiusa da due spazi vuoti (il nome dell'elemento)
quindi trova gli eventuali attributi tra parentesi, divisi da virgole

questo pseudo-ridicolo-codice dovrebbe renderti l'idea...
__________________
akyra è offline   Rispondi citando il messaggio o parte di esso
Old 04-05-2007, 12:16   #9
Dostybear
Member
 
Iscritto dal: Oct 2006
Messaggi: 197
Inizialmente pensavo proprio a una soluzione del genere...ora mi hai messo qualche dubbio
Ma per costruire un analizzatore lessicale non dovrei comunque basarmi sul riconoscimento delle stringhe?
Dostybear è offline   Rispondi citando il messaggio o parte di esso
Old 04-05-2007, 15:50   #10
akyra
Senior Member
 
L'Avatar di akyra
 
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
beh ma quello che ho scritto io non è un abbozzo di analizzatore lessicale, è più che altro una manipolatore di stringhe.
Quello che intendevo dire io è che, se devi costruirti l'analizzatore lessicale, allora devi considerare TUTTI i costrutti possibili del linguaggio e procedere di conseguenza: leggere un carattere alla volta e prendere le relative decisioni

hai letto "<", allora portati in un certo stato che si aspetta come prossimo carattere un "!", quindi leggi sto benedetto "!", se poi arriverà un "E" cambia lo stato e passa ad uno specifico che riconosce la stringa "ELEMENT", se invece arriva "A" passa ad uno stato in grado di riconoscere "ATTLIST"....e così via

come puoi capire questo è molto più prolisso e complicato in quanto devi costruire l'analizzatore lessicale, in modo che riconosca tutti i possibili costrutti del DTD....ad esempio se dopo aver letto "<!" compare una "U" inaspettata, l'analizzatore deve essere in grado di eseguire un azione...magari notificando l'errore di sintassi...

nell'altro modo invece fai delle ipotesi forti sul DTD che vai ad analizzare, cioè ipotizzi che gli elementi "<!ELEMENT" siano SEMPRE seguiti da uno spazio vuoto a cui segue l'identificatore cercato...ma se ti capita un DTD che non rispetta questa ipotesi, naturalmente il programma non funzionerà....hai capito?
__________________
akyra è offline   Rispondi citando il messaggio o parte di esso
Old 04-05-2007, 16:29   #11
Dostybear
Member
 
Iscritto dal: Oct 2006
Messaggi: 197
Si, sei stato chiarissimo.
In effetti non dovrebbe importarmi molto che il dtd sia scritto come si deve, cioè posso presumere che lo sia, e quindi fare tutte le manipolazioni necessarie di conseguenza.
Ti ringrazio per la pazienza
Dostybear è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
Wikipedia valuta il blocco di Archive.to...
Cupra Tavascan primo veicolo cinese a en...
openSIL, il firmware open-source di AMD ...
Da dove avete scaricato 7-zip? Il vostro...
Fotocamera selfie da 100 megapixel: la n...
Robot aspirapolvere in super offerta su ...
Addio a GPT-4o, il modello empatico (e p...
Razer Boomslang 20th Annyversary Edition...
Nintendo contro la pirateria: bloccati d...
NIS2 entra nel vivo: la soluzione di Cyn...
xAI perde due cofondatori in due giorni:...
Robot aspirapolvere Mova Z60 Ultra Rolle...
Google semplifica la rimozione di immagi...
EPOS H3 Hybrid a soli 39€: cuffie gaming...
Samsung rilancia l'assistenza: ora puoi ...
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: 13:12.


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