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

    [Android] Problema con parsing XML

    ciao!
    ho un problema con il parsing di un file XML.
    sostanzialmente non ottengo errori, però non fa il parsing.
    ho controllato ed il file esiste.
    questo il codice che richiamo in AsyncTask:
    codice:
    import java.io.File;
    import java.io.IOException;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    import org.w3c.dom.Document;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;
    import android.content.Context;
    
    public class ReadXml {
    
            public void read(Context context, String file) throws SAXException,
                            IOException, ParserConfigurationException {
                    if (new File(file).exists()) {
                            System.out.println(file);
                            DocumentBuilderFactory builderFactory = DocumentBuilderFactory
                                            .newInstance();
                            DocumentBuilder builder = builderFactory.newDocumentBuilder();
                            System.out.println("OK");
                            Document document = builder.parse(file);
                            document.getDocumentElement().normalize();
                            NodeList nodeList = document.getElementsByTagName("cliente");
                            System.out.println("OK");
                    }
            }
    
    }
    

    questo l'output del logcat:
    codice:
    11-25 16:17:10.725: I/System.out(5406): /mnt/sdcard/clienti.xml
    11-25 16:17:10.725: I/System.out(5406): OK
    11-25 16:17:10.901: I/Choreographer(5406): Skipped 34 frames!  The application may be doing too much work on its main thread.
    11-25 16:17:11.115: I/Choreographer(5406): Skipped 53 frames!  The application may be doing too much work on its main thread.
    


    come vedete il file esiste, e ne stamoa anche il path.
    però esce solo il primo OK, quello prima del parse.
    avete qualche idea?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    55
    Ciao, prova a farti stampare le eccezioni per capire meglio.
    Magari metti anche un pezzetto del file xml

  3. #3
    hai ragione sorry:
    codice:
            @Override
            protected Object doInBackground(Object... params) {
                try {
                    rx.read(getApplicationContext(), UrlAndPath.XML_CLIENTI);
                } catch (IOException e) {
                    System.out.println("IOException: " + e.getMessage());
                } catch (SAXException e) {
                    System.out.println("SAXException: " + e.getMessage());
                } catch (ParserConfigurationException e) {
                    System.out.println("ParserConfigurationException: " + e.getMessage());
                }
                return null;
            }
    da qua lo richiamo.
    l'errore è questo:
    codice:
    11-28 11:25:06.431: I/System.out(896): IOException: Protocol not found: /mnt/sdcard/clienti.xml
    nel manifest ho messo questo permesso:
    codice:
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da fermat Visualizza il messaggio
    codice:
    11-28 11:25:06.431: I/System.out(896): IOException: Protocol not found: /mnt/sdcard/clienti.xml
    Guarda .... non ho modo di provare o verificare ma fossi in te proverei ad usare l'altro parse, quello che riceve java.io.File invece che String.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    ciao andbin.
    modifcato così:
    codice:
    public class ReadXml {
    
        public void read(Context context, String file) throws SAXException,
                IOException, ParserConfigurationException {
            File f = new File(file);
            if (f.exists()) {
                DocumentBuilderFactory builderFactory = DocumentBuilderFactory
                        .newInstance();
                DocumentBuilder builder = builderFactory.newDocumentBuilder();
                Document document = builder.parse(f);
                document.getDocumentElement().normalize();
                NodeList nodeList = document.getElementsByTagName("cliente");
                System.out.println("OK");
            }
        }
    
    }
    non ho eccezioni e vedo l'ok.
    quindi adesso dovrebbe andare!
    grazie per il consiglio!

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.