Ciao a tutti.
Ho il seguente problema: voglio convertire una stringa di testo in xml e di conseguenza attuare anche il processo inverso ovvero convertire la stringa da xml a testo normale.
Ora, son riuscito tramite qualche aiuto e qualche guida a realizzare il seguente metodo:
Codice PHP:
public String textToXML(javax.swing.text.Document swingDocument) throws MessageFormatException {
DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder;
try {
documentBuilder = documentFactory.newDocumentBuilder();
} catch (ParserConfigurationException ex) {
throw new MessageFormatException("Errore durante la creazione del DocumentBuilder", ex);
}
org.w3c.dom.Document document = documentBuilder.newDocument();
Element root = document.createElement("message");
document.appendChild(root);
//Element bold = document.createElement("bold");
// bold.setTextContent("pippo");
// root.appendChild(bold);
Element messageContent = document.createElement("text");
try {
messageContent.setTextContent(swingDocument.getText(0, swingDocument.getLength()));
} catch (BadLocationException ex) {
throw new MessageFormatException("Errore durante l'estrazione del testo dal document swing", ex);
}
root.appendChild(messageContent);
//scrive il document xml su una stringa di testo
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer;
try {
transformer = transformerFactory.newTransformer();
} catch (TransformerConfigurationException ex) {
throw new MessageFormatException("Errore durante la creazione del Transformer", ex);
}
StringWriter buffer = new StringWriter();
StreamResult result = new StreamResult(buffer);
DOMSource source = new DOMSource(document);
try {
transformer.transform(source, result);
} catch (TransformerException ex) {
throw new MessageFormatException("Errore durante la trasformazione del testo in xml", ex);
}
System.out.println ("prova");
return buffer.toString();
}
Ora, in questo modo io converto la mia stringa di testo in xml.
Ad esempio, partendo dalla stringa "ciao prova testo", ottengo come output la seguente stringa:
Codice PHP:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><message><text>ciao prova testo</text></message>
Fin qui tutto ok, ora il problema principale, ovvero:
la mia stringa da convertire viene da un JTextPane, e la stringa si porta dietro varie proprieta' del testo come colore del font, stile (grassetto, corsivo, etc).
Ora quindi chiedo il vostro aiuto : come faccio per suddividere il mio documento xml in modo da avere vari nodi quanti sono gli stili possibili?
Ad esempio un nodo <bold> o un <italic> etc? E per il colore del testo?
Intuitivamente dovro' fare un ciclo for e scandagliare tutto il documento (che cambia sempre ovviamente) alla ricerca delle parole in grassetto etc, ma non capisco come fare.
Spero possiate aiutarmi, ciao