Torna indietro   Hardware Upgrade Forum > Software > Programmazione

 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco
Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco
MiniLED di fascia media con local dimming a 192 zone, 144 Hz nativi e audio firmato Devialet. La prova strumentale riscontra colori affidabili e gaming reattivo, per un prodotto molto accessibile e convincente. Ma la soundbar aggiuntiva è quasi d'obbligo
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Amazon porta i colori sul suo Kindle da scrittura più grande: schermo Colorsoft a 11 pollici, processore quad-core, penna premium più reattiva e strumenti IA per le note, sono le note salienti. Il salto di prezzo rispetto al modello in bianco e nero si fa sentire, anche se la percezione è quella di trovarsi di fronte a un prodotto di fascia altissima, per veri appassionati
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-05-2007, 10: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, 08: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 09:04.
akyra è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2007, 10: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, 16: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, 08: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, 09: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, 09: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, 09: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, 11: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, 14: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, 15: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


 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
Blue Origin sta ricostruendo velocemente...
La sovranità digitale non è...
ESS obbligatorio da luglio: il rivoluzio...
Batterie Tesla rubate direttamente fuori...
Il Governo statunitense anticipa di 5 an...
Steam Machine costa troppo? Non per i ba...
AWS e Azure sono gatekeeper e vanno rego...
Huawei presenta una nuova infrastruttura...
Logitech G e Activision uniscono le forz...
Snapdragon Summit 2026: ecco quando sara...
Sardegna, debutta il primo treno a idrog...
CXMT non ci salverà dai prezzi de...
Tidal contro la musica creata con l'inte...
Videproiettore compatto XGIMI MoGo 2 Pro...
Narwal rilancia su Amazon per il post-Pr...
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: 20:31.


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