Ho un file XML con questa struttura:
Questa classe dovrebbe occuparsi di aprire il file XML, modificarlo aggiungendo un nodocodice:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE commenti SYSTEM "commenti.dtd"> <commenti> <commento title="Titolo 1"> <utente>Utente 1</utente> <testo>Commento di Utente 1</testo> </commento> </commenti>
commento e scrivere le modifiche sul medesimo file.
Il documento viene correttamente aperto e riscritto integralmente (non ricevo eccezioni e la data di modifica del file si aggiorna ogni volta), tuttavia non viene aggiunto alcun nodo commento, il contenuto del document viene lasciato inalterato.codice:public class XMLHandler { private Document document; public Document openXML(String path) { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(true); try { DocumentBuilder builder = factory.newDocumentBuilder(); document = builder.parse(new File(path)); } catch (ParserConfigurationException pce) { } catch (SAXException se) { } catch (IOException ioe) { } return document; } private void writeXML(String path) { TransformerFactory transformerFactory = TransformerFactory.newInstance(); try { Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "commenti.dtd"); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.transform( new DOMSource(document), new StreamResult(new FileOutputStream(path))); } catch (TransformerConfigurationException tce) { } catch (TransformerException te) { } catch (FileNotFoundException fnfe) { } } public void addComment(String path, String user, String content) { document = openXML(path); // Creo gli elementi che costituiscono la struttura del documento XML Element commento = document.createElement("commento"); Attr title = document.createAttribute("title"); Element utente = document.createElement("utente"); Element testo = document.createElement("testo"); // Appendo il nome dall'utente, passato come parametro al metodo utente.appendChild(document.createTextNode(user)); // Appendo il messaggio scritto dall'utente, passato come parametro al metodo testo.appendChild(document.createTextNode(content)); // Appendo l'attributo title al commento title.setValue("Titolo di prova"); commento.setAttributeNode(title); // Appendo i nodi child commento.appendChild(utente); commento.appendChild(testo); // Scrivo il documento XML writeXML(path); }
Qualche idea? Grazie.

Rispondi quotando
)
