Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [java] aggiornare un file xml

    Io ho un file xml già creato. Come faccio per aggiungere un nodo al suo interno?

    Io ho provato a fare così:
    codice:
    DocumentBuilderFactory docfactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = docfactory.newDocumentBuilder();
    
    Document d = builder.parse(application.getRealPath("/") + "rubrica.xml");
    
    
    radice = d.getDocumentElement();
    Element persona = d.createElement("persona");
    Element nome = d.createElement("nome");
    nome.appendChild(d.createTextNode(n));
    persona.appendChild(nome);
    radice.appendChild(persona);
    Ma devo poi salvare il file con PrintStream?
    Potete darmi qualche indicazione? grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [java] aggiornare un file xml

    Originariamente inviato da devil89
    Ma devo poi salvare il file con PrintStream?
    Per scrivere il documento XML so che si fa così:

    codice:
    import java.io.*;
    import org.w3c.dom.*;
    import javax.xml.parsers.*;
    import javax.xml.transform.*;
    import javax.xml.transform.dom.*;
    import javax.xml.transform.stream.*;
    
    ....
    
    Document doc;
    
    ....
    
    File file = new File ("documento.xml");
    
    TransformerFactory tf = TransformerFactory.newInstance ();
    Transformer t = tf.newTransformer ();
    
    t.transform (new DOMSource (doc), new StreamResult (file));
    Però, se non mi sbaglio, a partire da JAXP 1.4 (incluso in Java SE 6.0) ci sono altre classi apposite per scrivere documenti XML. Purtroppo non sono esperto di JAXP e non so dirti di più.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    a dirti la verità ho risolto in maniera più semplice. Posto la soluzione per chi fosse interessato.
    Io ricevo 2 stringhe, che sono il nome e il cognome che devo memorizzare. Il metodo creaPersona() mi crea il nuovo nodo persona e poi richiamo una funzione ricorsiva che scorre l'albero a partire dalla radice e crea la struttura xml, salvandola in una semplice stringa, che vado poi a stampare nel file.

    codice:
    DocumentBuilderFactory docfactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = docfactory.newDocumentBuilder();
    Document d = builder.parse(application.getRealPath("/") + "rubrica.xml");
    Element radice = documento.getDocumentElement();
    
    public void creaPersona(Document d, String n, String c) {
    	s2 = "";
    	
    	Element persona = d.createElement("persona");
    	Element nome = d.createElement("nome");
    	nome.appendChild(d.createTextNode(n));
    	persona.appendChild(nome);
    	
    	Element cognome = d.createElement("cognome");
    	cognome.appendChild(d.createTextNode(c));
    	persona.appendChild(cognome);
    	radice.appendChild(persona);
    	
    	runTree(radice); // funzione ricorsiva che tralascio per la sua semplicità
    }
    
    PrintStream f = new PrintStream(new FileOutputStream(application.getRealPath("/") + "rubrica.xml"));
    f.print("<?xml version=\"1.0\"?>");
    f.print(s2);

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da devil89
    a dirti la verità ho risolto in maniera più semplice. Posto la soluzione per chi fosse interessato.
    Io ricevo 2 stringhe, che sono il nome e il cognome che devo memorizzare. Il metodo creaPersona() mi crea il nuovo nodo persona e poi richiamo una funzione ricorsiva che scorre l'albero a partire dalla radice e crea la struttura xml, salvandola in una semplice stringa, che vado poi a stampare nel file.
    Oddio ... non mi sembra proprio la soluzione più valida e pulita. Perché devi preoccuparti tu di tutte le specifiche XML. Solo per dirne una: e se ci sono delle entità da codificare?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    I dati passati in input li controllo prima di passarli alla funzione. Cosa intendi per entità da convertire?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da devil89
    Cosa intendi per entità da convertire?
    Se hai un nodo di testo che contiene il testo "pippo & pluto", nel file XML devi scriverlo:

    pippo &amp;amp; pluto

    Anche per le altre 4 entità predefinite.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    ah si. hai ragione. vedrò di aggiustare questa cosa.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.