Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    22

    [java - dom - xml] come salvo il file modificato?

    Ciao, sto cercando di modificare un file xml aggiungendo nodi col DOM, il codice è questo ma non so se va bene:

    private void addInfo(String infoFile){
    // factory initialisation
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    // force the parser to validate the document
    factory.setValidating(true);
    Document document = null;
    try {
    // builder initialisation
    DocumentBuilder builder = factory.newDocumentBuilder();
    // launch the parsing and create DOM structure
    document = builder.parse(infoFile);
    } catch (Exception e) {
    e.printStackTrace();
    }
    if (document != null) {
    NodeList listaFoto= document.getElementsByTagName("image");
    int numeroFoto= listaFoto.getLength();
    for(int i=0; i<numeroFoto; i++){//se eseste non faccio niente
    if((listaFoto.item(i).getFirstChild().getNodeValue ().equals(fileName))==true) return;
    }//aggiugo info
    Element foto = document.createElement("foto");
    Element image = document.createElement("image");
    Element thumbnail = document.createElement("thumbnail");
    Text im=document.createTextNode(fileName);
    Text tb=document.createTextNode("TB_"+fileName);
    image.appendChild(im);
    thumbnail.appendChild(tb);
    foto.appendChild(image);
    foto.appendChild(thumbnail);
    Node root=document.getElementsByTagName("user").item(0) ;
    root.appendChild(foto);

    }

    }


    ora volevo sapere come faccio a salvare il file, ho trovato dei tutorial che parlano solo di sax, sapete dirmi qualcosa? grazie e ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    22

  3. #3
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    codice:
    import javax.xml.parsers.*;
    import org.w3c.dom.*;
    import java.io.*;
    import org.xml.sax.*;
    import javax.xml.transform.*;
    import javax.xml.transform.dom.*;
    import javax.xml.transform.stream.*;
    
                TransformerFactory transformerFactory = TransformerFactory.newInstance();
                Transformer serializer = transformerFactory.newTransformer();
                serializer.transform(new DOMSource(document), new StreamResult (new FileOutputStream(source)));
    dove "source" è il percorso del tuo file

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    22
    Grazie mille... mi serviva prorpio javax.xml.transform.
    grazie e ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    22
    ho da chiedere un altra cosa però....
    quando salvo il file, perdo il riferimento al DTD, come mai? come funziona factory.setValidating(true), dipenderà da quello?

  6. #6
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    Purtroppo è un problema della libreria che quando serializza l'oggetto non mantiene i riferimenti alle DTD. Il metodo setValidating dovrebbe stampare in output gli eventuali errori del documento rispetto alla DTD...

  7. #7
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    A proposito, se vuoi al posto delle DTD puoi usare gli schemi xml, che ti permettono anche una specificità maggiore;

    ne esistono di due tipi, quelli del w3c (che attualmente sono ancora in fase di sviluppo) e quelli di M$

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    22
    senti, sai dirmi dove posso trovare una guida decente per gli schemi xml? ho provato a cercare in giro, ho letto le dispense dei miei professori, ma cmq non sono riuscito a realizzare niente perchè non ho capito bene molte cose, e quindi ho usato il DTD....
    per qunto riguarda M$ non sapevo niente, provo a cercare qualcosa.
    grazie

  9. #9
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    Con quelle dei miei prof. mi sono trovato abbastanza bene, però non sono accessibili da tutti, se vuoi te le posto in privato


    Però c'è un errore, quando colleghi gli schemi nei documenti, la sintassi giusta è:

    <root xmlns:x-schema = "nome_dello_schema.xml">

    Puoi validare i documenti rispetto allo schema scaricando gratuitamente il validator dal sito della M$

    http://msdn.microsoft.com/downloads/...tor/sample.asp
    Fammi sapere se ti sono servite

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 © 2024 vBulletin Solutions, Inc. All rights reserved.