IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Changer l'encoding d'un fichier XML


Sujet :

Android

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 164
    Points : 159
    Points
    159
    Par défaut Changer l'encoding d'un fichier XML
    bonjour,

    mes fichier XML sont encoding="iso-8859-1"
    le texte s'affiche avec des symboles, est il possible de modifier le encoding dans le chargement du donnée, je parcouris mes fichier XML avec DOM

    merci

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    L'encoding d'un fichier XML est spécifié dans celui-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    Il suffit de mettre UTF-8 par exemple...

    Ensuite normalement, un parser XML se chargera d'adapter le flux de données en conséquence.

    En java, tout est en UTF-16 donc aucun soucis...
    C'est bien au transfert Java <-> fichier que doit se faire la traduction...

    Normalement, DocumentBuilder.parse() se charge de tout.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 164
    Points : 159
    Points
    159
    Par défaut
    salut,

    je ne peux pas changer les fichiers XML, je dois travaillé avec ce fichier sans rien changé d'autre application lisent de ses fichiers.

    est ce qu'il y a une methode de lire ces fichier est par exemple le convetir ou bien changer l'encoding

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Et le fichier il dit quoi comme "encoding" ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu peux nous poster (en attachement) un fichier qui pose problème.

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 164
    Points : 159
    Points
    159
    Par défaut
    bonjour,

    dsl pour ce long absence, je suis toujours dans le même problème
    voici le lien du fichier xml
    http://femme.ccuisiner.com/tests/artculture.xml

    merci pour votre aide
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Il n'y a rien à convertir dans ces fichiers, ils sont corrects, ils sont déclaré iso-8859-1 et c'est bien du iso-8859-1. Donc ton problème survient à l'affichage. Tu affiche comment tes données pour avoir des erreurs?

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 164
    Points : 159
    Points
    159
    Par défaut
    je parcoure le fichier en DOM, le problème est que pas tout les caractères spéciaux s'affichant correct , ils y ont qui s'affichant correct et autre des carreaux

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    oui, mais tu affiche et lit comment (code svp)?

  10. #10
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    En fait on ne "parcourt" pas un fichier en DOM...

    A. Il y a un fichier...
    B. Ce fichier est lu par Java comme une suite de caractère (encoding)
    C. Cette suite de caractères (Java) est parsée en un DOM-Java (Document Object Model)
    D. La parcours du DOM est faite.
    E. L'affichage est réalisé.

    Comme (C), (D) et (E) sont du "java pur" (ou presque), les seuls "gros" soucis (à priori) peuvent être (A) et (B).
    On a vérifié (A) => c'est bon le fichier est en ISO-8859-1
    Il faut maintenant vérifier (B)... et là cela peut dépendre de ton code...
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  11. #11
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 164
    Points : 159
    Points
    159
    Par défaut
    j'éspére que c'est la partie que vous voulez

    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    public class MainActivity extends Activity {
     
    	// All static variables
    	static final String URL = "http://femme.ccuisiner.com/tests/artculture.xml";
    	// XML node keys
    	static final String KEY_ITEM = "item"; // parent node
    	static final String KEY_TITLE = "title";
    	static final String KEY_AUTHOR = "author";
    	static final String KEY_DESC = "description";
    	static final String KEY_PHOTO = "photo";
    	static final String KEY_PUBDATE = "pubDate";
     
        ListView list;
        LazyAdapter adapter;
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    		ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
     
    		XMLParser parser = new XMLParser();
    		String xml = parser.getXmlFromUrl(URL); // getting XML from URL
    		Document doc = parser.getDomElement(xml); // getting DOM element
     
    		NodeList nl = doc.getElementsByTagName(KEY_ITEM);
     
    		for (int i = 0; i < nl.getLength(); i++) {
    			// creating new HashMap
    			HashMap<String, String> map = new HashMap<String, String>();
    			Element e = (Element) nl.item(i);
    			// adding each child node to HashMap key => value
    			map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
    			map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
    			map.put(KEY_AUTHOR, parser.getValue(e, KEY_AUTHOR));
    			map.put(KEY_PUBDATE, parser.getValue(e, KEY_PUBDATE));
    			map.put(KEY_PHOTO, parser.getValue(e, KEY_PHOTO));
     
    			// adding HashList to ArrayList
    			songsList.add(map);
    		}
            list=(ListView)findViewById(R.id.liste);
            adapter=new LazyAdapter(this, songsList);
            list.setAdapter(adapter);
     
    //        Button b=(Button)findViewById(R.id.button1);
    //        b.setOnClickListener(listener);
    //        Button i =(Button)findViewById(R.id.button1);
    //        i.setOnClickListener(listener);
        }
     
     
        @Override
        public void onDestroy()
        {
            list.setAdapter(null);
            super.onDestroy();
        }
     
     
    }

  12. #12
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Et ne crash pas ce code ?
    Normalement tu devrais avoir un NetworkOnMainThreadException
    (il est interdit de downloader du Net dans une fonction UI comme onCreate(), onClick(), etc...).

    Sinon, en fait c'est ce que je disais dans mon message, l'important c'est la conversion en caractères donc c'est le code de "getXmlFromUrl" qu'il nous faudrait.

    Quelque chose me dit que le code en question ne tiens pas compte de l'encoding HTTP... ou pire, il a l'air de transformer en String (ce qui nécessite un parsing du XML quand même) sans tenir compte de ce qui est écrit dans le XML....
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  13. #13
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 164
    Points : 159
    Points
    159
    Par défaut
    le voila
    merci poir votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    public class XMLParser {
     
    	// constructor
    	public XMLParser() {
     
    	}
     
    	/**
             * Getting XML from URL making HTTP request
             * @param url string
             * */
    	public String getXmlFromUrl(String url) {
    		String xml = null;
     
    		try {
    			// defaultHttpClient
    			DefaultHttpClient httpClient = new DefaultHttpClient();
    			HttpPost httpPost = new HttpPost(url);
     
    			HttpResponse httpResponse = httpClient.execute(httpPost);
    			HttpEntity httpEntity = httpResponse.getEntity();
    			xml = EntityUtils.toString(httpEntity);
     
    		} catch (UnsupportedEncodingException e) {
    			e.printStackTrace();
    		} catch (ClientProtocolException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		// return XML
    		return xml;
    	}
     
    	/**
             * Getting XML DOM element
             * @param XML string
             * */
    	public Document getDomElement(String xml){
    		Document doc = null;
    		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    		try {
     
    			DocumentBuilder db = dbf.newDocumentBuilder();
     
    			InputSource is = new InputSource();
    		        is.setCharacterStream(new StringReader(xml));
    		        doc = db.parse(is); 
     
    			} catch (ParserConfigurationException e) {
    				Log.e("Error: ", e.getMessage());
    				return null;
    			} catch (SAXException e) {
    				Log.e("Error: ", e.getMessage());
    	            return null;
    			} catch (IOException e) {
    				Log.e("Error: ", e.getMessage());
    				return null;
    			}
     
    	        return doc;
    	}
     
    	/** Getting node value
              * @param elem element
              */
    	 public final String getElementValue( Node elem ) {
    	     Node child;
    	     if( elem != null){
    	         if (elem.hasChildNodes()){
    	             for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){
    	                 if( child.getNodeType() == Node.TEXT_NODE  ){
    	                     return child.getNodeValue();
    	                 }
    	             }
    	         }
    	     }
    	     return "";
    	 }
     
    	 /**
              * Getting node value
              * @param Element node
              * @param key string
              * */
    	 public String getValue(Element item, String str) {		
    			NodeList n = item.getElementsByTagName(str);		
    			return this.getElementValue(n.item(0));
    		}
    }

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ton code devrait ressembler à ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		InputStream xml = parser.getXmlFromUrl(URL); // getting XML from URL
    		Document doc = parser.getDomElement(xml); // getting DOM element
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	public InputStream getXmlFromUrl(String url) {....}
     
    	/**
             * Getting XML DOM element
             * @param XML string
             * */
    	public Document getDomElement(InputStream xml){
    Bref, passe des inputstream à ton documentbuilder, pas des Strings.

  15. #15
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 164
    Points : 159
    Points
    159
    Par défaut
    j'ai changé ce que tu m'as demandé
    j'ai changé aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    xml = EntityUtils.toString(httpEntity);
    // à
    xml = (InputStream) httpEntity;
    mais cette fois l'application ne marche plus message erreur
    The application monApp has stopped unexpectledly.please try again

    l'erreur est dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // main
    InputStream xml = parser.getXmlFromUrl(URL); // getting XML from URL
    // getXmlFromUrl
    xml = (InputStream) httpEntity;

  16. #16
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Enfin... il devrait surtout ressembler à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    public Document getDOMFromUrl(String urlstr) throws IOException
    {
    	Document document = null;
    	InputStream is = null;
    	URLConnection conn = null;
    	try {
    		URL url = new URL(urlstr);
    		conn = url.openConnection();
    		is = conn.getInputStream();
     
    		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
     
    		dbf.setValidating(false);
    		dbf.setIgnoringComments(false);
    		dbf.setIgnoringElementContentWhitespace(true);
    		dbf.setNamespaceAware(true);
     
    		DocumentBuilder db = dbf.newDocumentBuilder();
    		document = db.parse(is);
    	} catch (IOException e) {
    		throw e;
    	} catch (Exception e) {
    		throw new IOExcepion("Unabled to load DOM from URL!",e);
    	} finally {
    		if (is != null) try { is.close(); } catch (Exception e) { Log.wtf("XMLParser","Couldn't gracefully close input-stream",e); }
    		if (conn != null) try { conn.close(); } catch (Exception e) { Log.wtf("XMLParser","Couldn't gracefully close connection",e); }
    	}
    	// return DOM
    	return document;
    }
    Avec les remarques suivantes:
    * C'est la responsabilité du client d'avoir une URL conforme... laisser le client construire l'objet URL et passer l'objet URL en paramètres
    * Il faut arrêter les try/catch "parce que sinon ça ne compile pas". Bien sur, du coup la fonction risque de lever une exception, et encore une fois, c'est au client de la gérer, pas à la fonction de "l'oublier".
    * J'ai collé des règles par défaut à DocumentBuilder, à voir si elles correspondent aux besoins.
    * La fonction doit de toute manière être appelée dans un Thread par l'UI que ce soit de manière "hard" (et ardue) ou de manière simple dans un AsyncTask.


    Ah et pour finir... "monApp has stopped unexpectledly.please try again" cela veut dire qu'il y a eu une exception, cette exception est dans le logcat, et nous coller le logcat serait bien utile !
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  17. #17
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 164
    Points : 159
    Points
    159
    Par défaut
    merci nicroman pour votre aide, malheureusement n'as pas marché , j'ai remplacé la fonction par la votre, et dans le main j'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Document doc = parser.getDOMFromUrl(xml);
    // par 
     
    try {
        doc = parser.getDOMFromUrl(xml);
         } catch (IOException e1) {
         // TODO Auto-generated catch block
         e1.printStackTrace();
    }
    l'erreur dans ce ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NodeList nl = doc.getElementsByTagName(KEY_ITEM);

  18. #18
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ce serait peut être bien que tu commence à prendre l'habitude de donner les erreur plutot que de nous laisser essayer de les deviner. On n'est pas devins et le stock de boules de cristal s'est épuisé en 2012

  19. #19
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Oui il va nous falloir du LogCat là....

    Mais encore une fois tu fais la même erreur (pourtant la gestion des exceptions est une partie primordiale, si ce n'est indispensable, de Java):

    try / catch juste histoire de faire disparaitre l'erreur de compilation (et non pour la gérer), c'est toujours la mort assurée de l'application.

    Du coup que se passe-t-il en cas d'exception ? Ben le programme continue sur:
    NodeList nl = doc.getElementsByTagName(KEY_ITEM);
    et bim... comme doc n'est pas encore initialisé, ca crash... (NullPointerException).

    Ce qu'il y a à l'interieur du try est L'ENSEMBLE de fonctions séquentielles à executer si il n'y a PAS d'exception...

    D'autre part, e.printStackTrace(); c'est vraiment moche... Sous Android c'est plutot: Log.e("MONAPPLI","Erreur de récupération XML",e);

    Donc un code genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    try {
        // on déclare "doc" ici, histoire de pas faire d'erreur d'utilisation en dehors du try
        Document doc = parser.getDOMFromUrl(url);
        // on utilise "doc".. si on est là, on a forcément un "doc" (sinon il y aurait eu une exception).
        NodeList nl = doc.getElements....;
     
        etc...
     
    } catch (IOException e) {
        Log.e("MONAPPLI","Erreur de récupération XML",e);
        // on peut surtout aussi coller un "Toast" ici histoire de prévenir l'utilisateur que cela n'a pas marcher.
    }
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  20. #20
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 164
    Points : 159
    Points
    159
    Par défaut
    bonjour,

    voici ce que donne logcat j'ai selectionné que la partie "error"

    je vous remercie infiniment pour votre aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    01-22 09:28:18.922: E/MONAPPLI(280): Erreur de récupération XML
    01-22 09:28:18.922: E/MONAPPLI(280): java.net.MalformedURLException: Protocol not found: <?xml version="1.0" encoding="iso-8859-1" ?>
    01-22 09:28:18.922: E/MONAPPLI(280): <rss version="2.0">
    01-22 09:28:18.922: E/MONAPPLI(280): <channel>
    01-22 09:28:18.922: E/MONAPPLI(280): <title>Abidjan.net Actualité Sport</title>
    01-22 09:28:18.922: E/MONAPPLI(280): <link>http://news.abidjan.net/</link>
    01-22 09:28:18.922: E/MONAPPLI(280): <description>Toute l'actualité sur l'art et la culture sur Abidjan.net</description>
    01-22 09:28:18.922: E/MONAPPLI(280): <language>FR</language>
    01-22 09:28:18.922: E/MONAPPLI(280): <copyright>Copyright (c) 1998-2011 Weblogy Corporation.</copyright>
    01-22 09:28:18.922: E/MONAPPLI(280): <lastBuildDate>1/13/2013 4:41:23 PM</lastBuildDate>
    01-22 09:28:18.922: E/MONAPPLI(280): <image>
    01-22 09:28:18.922: E/MONAPPLI(280): <title>Abidjan.net</title>
    01-22 09:28:18.922: E/MONAPPLI(280): <link>http://www.abidjan.net/</link>
    01-22 09:28:18.922: E/MONAPPLI(280): <url>http://www.abidjan.net/rss/images/abidjan_logo.gif</url>
    01-22 09:28:18.922: E/MONAPPLI(280): </image>
    01-22 09:28:18.922: E/MONAPPLI(280): <item>
    01-22 09:28:18.922: E/MONAPPLI(280): <title>Artisanat ivoirien : Les acteurs s&#146;offrent une boussole</title>
    01-22 09:28:18.922: E/MONAPPLI(280): <link>http://news.abidjan.net/h/448655.html</link>
    01-22 09:28:18.922: E/MONAPPLI(280): <category>Le Temps</category>
    01-22 09:28:18.922: E/MONAPPLI(280): <description>Les acteurs du secteur de l&#146;artisanat ivoirien, étaient en conclave récemment à Abidjan. Durant une journée d&#146;échanges, les participants ont fait  des recommandations. Citons entre autres, le   renforcement   du  cadre législatif et réglementaire du secteur,  l&#146;appui au  développement organisationnel et institutionnel du secteur. Sans oublier, la mise  en place des programmes de formation, de perfectionnement et de recyclage. A ces recommandations, il convient d&#146;ajouter celle qui préconise la création de coopératives de crédit et le renforcement du fonds de garantie de prêts aux artisans. Informer sur les organismes et procédures de protections des &#156;uvres artisanales et renforcer les mécanismes d&#146;application des lois de protection. Pour mieux rentabiliser ce  secteur  très pourvoyeurs d&#146;emplois, les participants ont préconisé  une plus grande  sensibilisation  des  artisans sur la nécessité et le bien fondé de la protection de leurs &#156;uvres, du développement  du  commerce des produits de l&#146;artisanat et de l&#146;échange d&#146;expériences. Il est également prévu   la  décentralisation  des services de protection des &#156;uvres artisanales. En ce qui concerne  l&#146;aspect financement qui est le nerf de la guerre, il a été  souhaité la facilitation des   procédures d&#146;octroi du crédit, la simplification des formulaires à remplir et la création de produits de financement mieux adaptés aux besoins des artisans des filières identifiées
    01-22 09:28:18.922: E/MONAPPLI(280): Bamba Mafoumgbé</description>
    01-22 09:28:18.922: E/MONAPPLI(280): <author>Le Temps</author>
    01-22 09:28:18.922: E/MONAPPLI(280): <pubDate>12 janvier 2013</pubDate>
    01-22 09:28:18.922: E/MONAPPLI(280): <guid isPermaLink="false">http://news.abidjan.net/h/448655.html</guid>
    01-22 09:28:18.922: E/MONAPPLI(280): </item>
    01-22 09:28:18.922: E/MONAPPLI(280): <item>
    01-22 09:28:18.922: E/MONAPPLI(280): <title>Réception des journalistes ex-exilés : La ministre de la Communication appelle au retour des autres confrères</title>
    01-22 09:28:18.922: E/MONAPPLI(280): <link>http://news.abidjan.net/h/448651.html</link>
    01-22 09:28:18.922: E/MONAPPLI(280): <category>Notre Voie</category>
    01-22 09:28:18.922: E/MONAPPLI(280): <photo>http://news.abidjan.net/photos/photos/Duncan-0364.jpg</photo>
    01-22 09:28:18.922: E/MONAPPLI(280): <description>Amos Beonaho, Franck Dally, Hermann Aboa, Robert Krassault, Serikpa Benson, John Jay ont été reçus, hier vendredi,  par la ministre de la Communication, porte-parole adjoint du gouvernement, Mme Affoussiata  Bamba-Lamine, à son cabinet sis au 22ème étage de la tour C. L&#146;hôte a indiqué que la cérémonie s&#146;inscrit dans le cadre de la réconciliation nationale. « &#133; Il est important pour vous et pour nous tous que vous soyez retournés au bercail. On est heureux que chez soi, car ce retour participe de votre épanouissement personnel. La réconciliation doit commencer par les autorités. Nous avons un fort désir de vous voir réconciliés avec vos frères », a-t-elle dit à ses hôtes. Avant de lancer un appel aux journalistes encore en exil : « Nous lançons un appel aux autres journalistes encore en exil de suivre votre voie. Car on ne peut avoir de paix et de sécurité que chez soi. C&#146;est nous qui devons tout faire pour que la Côte d&#146;Ivoire se reconstruise », a-t-elle relevé. Par ailleurs, la ministre  a souligné que le président de l&#146;Union nationale des journalistes de Côte d&#146;Ivoire (Unjci), Traoré Moussa Ahmed dit M.T., doit être encouragé dans sa tâche d&#146;aider au retour d&#146;exil des journalistes. Car, pour elle, aucun journaliste ne doit vivre hors du pays. « Au-delà
    01-22 09:28:18.952: E/AndroidRuntime(280): FATAL EXCEPTION: main
    01-22 09:28:18.952: E/AndroidRuntime(280): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.weblogy.abidjan/com.weblogy.abidjan.MainActivity}: java.lang.NullPointerException
    01-22 09:28:18.952: E/AndroidRuntime(280): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
    01-22 09:28:18.952: E/AndroidRuntime(280): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    01-22 09:28:18.952: E/AndroidRuntime(280): 	at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    01-22 09:28:18.952: E/AndroidRuntime(280): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    01-22 09:28:18.952: E/AndroidRuntime(280): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    01-22 09:28:18.952: E/AndroidRuntime(280): 	at android.os.Looper.loop(Looper.java:123)
    01-22 09:28:18.952: E/AndroidRuntime(280): 	at android.app.ActivityThread.main(ActivityThread.java:4627)
    01-22 09:28:18.952: E/AndroidRuntime(280): 	at java.lang.reflect.Method.invokeNative(Native Method)
    01-22 09:28:18.952: E/AndroidRuntime(280): 	at java.lang.reflect.Method.invoke(Method.java:521)
    01-22 09:28:18.952: E/AndroidRuntime(280): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    01-22 09:28:18.952: E/AndroidRuntime(280): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    01-22 09:28:18.952: E/AndroidRuntime(280): 	at dalvik.system.NativeStart.main(Native Method)
    01-22 09:28:18.952: E/AndroidRuntime(280): Caused by: java.lang.NullPointerException
    01-22 09:28:18.952: E/AndroidRuntime(280): 	at com.weblogy.abidjan.MainActivity.onCreate(MainActivity.java:47)
    01-22 09:28:18.952: E/AndroidRuntime(280): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    01-22 09:28:18.952: E/AndroidRuntime(280): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
    01-22 09:28:18.952: E/AndroidRuntime(280): 	... 11 more

Discussions similaires

  1. [JDOM] Changer l'emplacement d'un fichier XML
    Par mimish dans le forum Format d'échange (XML, JSON...)
    Réponses: 16
    Dernier message: 23/04/2010, 13h45
  2. [DOM] Specifier l'encoding d'un fichier XML en java
    Par Esil2008 dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 23/02/2009, 10h37
  3. [XPATH] changer des attributs d'un fichier Xml + code Java
    Par RouRa22 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 07/03/2008, 09h55
  4. changer le contenu d'un fichier xml.
    Par mun_a dans le forum Général Python
    Réponses: 2
    Dernier message: 24/08/2007, 14h34
  5. [XML]Encoding d'un fichier XML
    Par virgul dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 13/06/2007, 16h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo