Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    17

    Urgente....xml E File Di Teso Java

    Ciao ragazzi.....ho un file che ha una struttura xml ma non contiene la radice
    <Alert>
    <Name>DIMET</Name>
    <Time>12.29.02</Time>
    <Level>High</Level>
    <TagID>200110901</TagID>
    <Message>PRESENTE</Message>
    </Alert><Alert>
    <Name>DIMET</Name>
    <Time>12.29.02</Time>
    <Level>High</Level>
    <TagID>200110902</TagID>
    <Message>PRESENTE</Message>
    </Alert>
    Questo file viene aggiornato e sovrascritto ogni 2 secondi.Dovrei fare un parser tramite jdom per poi inserire i dati all'interno di un database,quindi ho creato una funzione in netbeans che mi permette di copiare il contenuto di questo file di origine all'interno di un file di destinazione,con l'aggiunta della radice.Questo è il codice
    import java.io.PrintWriter;
    import java.io.PrintStream;
    import java.io.OutputStreamWriter;
    import java.io.InputStreamReader;
    import java.io.FileOutputStream;
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.PrintStream;
    import java.io.*;
    import java.util.*;


    public class esempio1 {
    public static void main(String[] args) throws IOException{
    FileWriter fw = new FileWriter("c:/filedidestinazione.txt");
    PrintWriter out = new PrintWriter(fw);
    OutputStreamWriter fout = new OutputStreamWriter(new FileOutputStream("c:/filedidestinazione.txt",true)); //true per fare l'append e non sovrascrivere
    PrintWriter out1 = new PrintWriter(fout);
    out.println("<root>");
    out1.print("</root>");
    try{
    BufferedReader i = new BufferedReader(new InputStreamReader(new FileInputStream("c:/filediorigine.txt")));
    String str = i.readLine();
    while(str!=null){
    out.println(str);
    str=i.readLine();}
    }
    catch(UnsupportedEncodingException ue){
    System.out.println("Not supported : ");
    }
    out.close();
    out1.close();
    out1.flush();
    }
    }

    ma il risultato del file di destinazione è il seguente.....
    <root>
    < A l e r t >

    < N a m e > D I M E T < / N a m e >

    < T i m e > 1 2 . 2 9 . 0 2 < / T i m e >

    < L e v e l > H i g h < / L e v e l >

    < T a g I D > 2 0 0 1 1 0 9 0 1 < / T a g I D >

    < M e s s a g e > P R E S E N T E < / M e s s a g e >

    < / A l e r t > < A l e r t >

    < N a m e > D I M E T < / N a m e >

    < T i m e > 1 2 . 2 9 . 0 2 < / T i m e >

    < L e v e l > H i g h < / L e v e l >

    < T a g I D > 2 0 0 1 1 0 9 0 2 < / T a g I D >

    < M e s s a g e > P R E S E N T E < / M e s s a g e >

    < / A l e r t >
    e quindi il parser viene arrestato perchè il file non è strutturato bene.
    Mi sapreste dire dove sbaglio??Grazie in anticipo-
    Daniele.

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

    Re: Urgente....xml E File Di Teso Java

    Originariamente inviato da satizzu
    Mi sapreste dire dove sbaglio??
    Vuoi che "sparo" la prima cosa che mi viene in mente solo vedendo la parte di testo sballato che hai appena mostrato??
    Sono questioni legate al charset/encoding. Probabilmente il file originale è codificato ad esempio in UTF-16 (2 byte per carattere) mentre tu leggi con le classi di I/O senza aver specificato esplicitamente il corretto charset e quindi usa il charset di "default" della piattaforma. Che almeno sui sistemi Windows non è certo UTF-16 ma generalmente è un "single-byte" come il win-1252.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    17
    Scusami,avevo dimenticato di scrivere la codifica nel mio codice.
    BufferedReader i = new BufferedReader(new InputStreamReader(new FileInputStream("c:/filediorigine.txt"),"UTF-8"));

    Se metto come codifica UTF 16 mi esce la radice e poi tanti quadratini......Quindi è un problema di codifica?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Rileggere il regolamento interno, please.
    Il titolo è assolutamente non conforme.
    Il posting del codice non rispetta nemmeno un po' quanto scritto nel regolamento.
    La parola "urgente" in un forum non esiste: tutte le discussioni hanno la stessa urgenza.

    Riapri pure una nuova discussione, seguendo le norme del regolamento sopra linkato per quanto riguarda l'uso dei titoli, del posting del codice e di eventuali messaggi di errore.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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