Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
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
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


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
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
Beast of Reincarnation ha una data di us...
Provati Reno15 e Reno15 FS: analisi comp...
L'Europa sfida la Cina sul litio: in Fin...
Sono 32, di cui 6 nuove, le offerte Amaz...
Rinnovo dei coupon Amazon nascosti: ecco...
Corsair aggiorna la confezione delle RAM...
Ecco tutti i robot aspirapolvere in offe...
Tachyum: dal processore universale alle ...
L'eVTOL tedesco per missioni mediche e m...
Zscaler Threat Report 2026: l'adozione d...
Claude AI minaccia omicidi e ricatti qua...
Dentro la gara: a Milano Cortina 2026 i ...
Samsung Display presenta QD-OLED Penta T...
KONAMI torna con "Silent Hill: Town...
Rende il citofono smart a 44,99€: Ring I...
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:03.


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