Originariamente inviato da Skaffa
Ho letto sulle documentazioni ma non son riuscito a capirci molto.
Riusciresti ad indirizzarmi al primo step, ovvero come "scandagliare" una stringa e ad esempio catturare tra i tag <bold></bold> tutti i caratteri in grassetto?
Innanzitutto ti dico subito che tra i miei Java Examples (vedi firma) sezione Text components c'è almeno 1 esempio in cui viene mostrato come inserire "programmaticamente" del testo "stilizzato" dentro un StyledDocument.
Quindi il suggerimento che posso darti è quello di partire con la conversione da documento XML (in stringa o su file o altro ... cambia poco) a documento StyledDocument. In pratica partendo da una "sorgente" (che ripeto, può essere di vari tipi) si fa il "parsing" del documento XML e si estraggono le varie informazioni "riconoscendo" man mano quali sono i tag e le parti di testo e si inserisce testo e attributi in un StyledDocument.
E ti suggerisco questo semplicemente perchè è un pochino più semplice rispetto al contrario (analizzare il contenuto di un StyledDocument e scrivere il documento XML).
Per fare il parsing esistono generalmente 2 approcci: DOM e SAX. Non so se conosci la differenza. Comunque trovi esempi a riguardo sempre tra i miei esempi (sezione XML technologies).
L'unica particolarità è che un documento XML che descrive un testo stilizzato si dice che è "document centric" in contrapposizione a "data centric".
In un XML "data centric" c'è una struttura fissa, molto "rigorosa" e oltretutto ripetitiva. Pensa ad un documento XML che descrive dei libri, che potrebbe essere ad esempio:
codice:
<libri>
<libro titolo="blabla">
<autore>pippo</autore>
<autore>pluto</autore>
</libro>
....tanti altri libri fatti allo stesso modo....
</libro>
Per come è stata pensata questa struttura, è fissa e ripetitiva. Ci possono essere N <libro> e ognuno contiene M <autore>.
In un XML "document centric" la struttura può certamente avere una base fissa e rigorosa ma certi tag, specialmente quelli che descrivono gli "attributi" possono essere innestati e ripetuti in modo abbastanza arbitrario.
Quindi il parsing è un pochino più complicato rispetto ad un documento "data centric" dove la struttura è completamente fissa e ben nota a priori.
Ti consiglio anche di partire avendo in testa di descrivere e gestire i "paragrafi". In un StyledDocument i paragrafi sono testo separato da un newline. E certi attributi come ad esempio l'alignment (vedi setAlignment() di StyleConstants) valgono appunto solo per un paragrafo nella sua interezza.
Quindi una ipotesi di documento XML potrebbe essere:
codice:
<?xml version="1.0" encoding="ISO-8859-1"?>
<text>
<para align="center">
Prova di <bold>testo</bold> <italic>stilizzato</italic>
</para>
<para>
Questo è un esempio di testo <bold><italic>stilizzato</italic></bold>.
</para>
</text>
Inizia a vedere come fare il parsing del documento XML con approccio DOM o SAX. Se hai dubbi/problemi, chiedi.