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 :

lecture ecriture d'un fichier xml sous android


Sujet :

Android

  1. #1
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut lecture ecriture d'un fichier xml sous android
    Bonjour à tous,

    Ma question est : Comment manipuler les fichiers XML en lecture et écriture?
    Par exemple, j'ai un fichier xml dans un répertoire de mon projet android. Comment lire ces données et les afficher par la suite? Quel moyen me permet de l'éditer ?

    J'ai réussi à faire cela avec une chaîne de caractère structurée sous forme d'un fichier xml mais je veux que ce dernier soit dans un répertoire de mon projet.

    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    package com.androidexample.parsexml;
     
    import java.io.BufferedReader;
    import java.io.StringReader;
    import java.util.List;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    import org.xml.sax.InputSource;
    import org.xml.sax.XMLReader;
    import android.os.Bundle;
    import android.app.Activity;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
     
     
    public class ParseXmlAndroidExample extends Activity {
     
    	List<XmlValuesModel> myData = null;
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_parse_xml_android_example);
     
    		final TextView output 		= (TextView) findViewById(R.id.output);
    		final Button bparsexml      = (Button) findViewById(R.id.bparsexml);
     
    		//Static XML data 
    		final String XMLData = "<?xml version=\"1.0\"?><login><status>OK</status><jobs><job><id>4</id><companyid>4</companyid><company>Android Example</company><address>Parse XML Android</address><city>Tokio</city><state>Xml Parsing Tutorial</state><zipcode>601301</zipcode><country>Japan</country><telephone>9287893558</telephone><fax>1234567890</fax><date>2012-03-15 12:00:00</date></job><job><id>5</id><companyid>6</companyid><company>Xml Parsing In Java</company><address>B-22</address><city>Cantabill</city><state>XML Parsing Basics</state><zipcode>201301</zipcode><country>America</country><telephone>9287893558</telephone><fax>1234567890</fax><date>2012-05-18 13:00:00</date></job></jobs></login>";
     
    		String dataToBeParsed = "Click on button to parse XML.\n\n XML DATA : \n\n"+XMLData;
    		output.setText(dataToBeParsed);
     
    		bparsexml.setOnClickListener(new OnClickListener() {
     
    			public void onClick(View v) {
     
    				try{
     
    					BufferedReader br=new BufferedReader(new StringReader(XMLData));
    					InputSource is=new InputSource(br);
     
    					//Create XML Parser
    					XMLParser parser=new XMLParser();
     
    					SAXParserFactory factory=SAXParserFactory.newInstance();
    			   		SAXParser sp=factory.newSAXParser();
    			   		XMLReader reader=sp.getXMLReader();
    			   		reader.setContentHandler(parser);
    			   		reader.parse(is);
     
    			   		myData=parser.list;
     
    			   		if(myData!=null){
     
    			   			String OutputData = "";
     
    			    	    for (XmlValuesModel xmlRowData : myData) {
    						  if(xmlRowData!=null)
    						  {  
     
     
    							int     id 			= xmlRowData.getid();
    					    	int     companyid 	= xmlRowData.getcompanyid();
    				    	    String  company 	= xmlRowData.getcompany();
    					        String  address		= xmlRowData.getaddress();
    							String  city		= xmlRowData.getcity();
    							String  state		= xmlRowData.getstate();
    							String  zipcode		= xmlRowData.getzipcode();
    							String  country		= xmlRowData.getcountry();
    							String  telephone	= xmlRowData.gettelephone();
    					    	String  date 		= xmlRowData.getdate();
     
     
    					        OutputData += "Job Node : \n\n "+ company +" | "
    					                                       + address +" | " 
    					                                       + city +" | " 
    					                                       + state +" | " 
    					                                       + zipcode +" | "
    					                                       + country +" | "
    					                                       + telephone +" | "
    					                                       + date +" \n\n "
     
    					                               ;
     
    						  }
    						  else
    							  Log.e("Jobs", "Jobs value null");
    					    }
     
    			    	    output.setText(OutputData);
    			   		}   
    				}
    			   	catch(Exception e){Log.e("Jobs", "Exception parse xml :"+e);}
    			} 	
    		});	   	
    	}
    }
    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut Google est ton ami
    Bonjour,

    La réponse se trouve partout sur Internet mais je suis de bonne humeur : http://java.developpez.com/faq/xml/?page=sax#parseurSax

    Cordialement

  3. #3
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Voila j'ai réussi a faire ce code mais il ne s’exécute pas correctement
    je pense que le problème est au niveau de l'instruction


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlReader.parse(new InputSource(new URL(USERS_URL).openStream()));
    parce que le Toast ne s’affiche pas !!!!!

    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
    public class XMLUsersActivity extends Activity {
    	private TextView usersTextView;
    	private final String USERS_URL = ("/TestXMLParser/user.xml");
     
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
     
    		usersTextView = (TextView) findViewById(R.id.tv_users);
    		try {
    			SAXParserFactory parserFactory = SAXParserFactory.newInstance();
     
    			SAXParser parser = parserFactory.newSAXParser();
     
    			XMLReader xmlReader = parser.getXMLReader();
     
    			XMLHandling handler = new XMLHandling();
     
    			xmlReader.setContentHandler(handler);
     
    			xmlReader.parse(new InputSource(new URL(USERS_URL).openStream()));
    			Toast.makeText(getApplicationContext(),"coucouuuuuuuuuuu11", Toast.LENGTH_LONG).show();
     
    			User[] users = handler.getUsersData();
    			String rs = "";
    			for (int i = 0; i < users.length; i++) {
    				rs += users[i];
    			}
    			usersTextView.setText(rs);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    cordialement

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Et comme d'hab', quelle est l'erreur dans le LogCat ?
    Je pense très fortement à une NetworkOnMainThreadException...
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  5. #5
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Premièrement merci pour votre attention
    Deuxièmement je pense que le LogCat ne contient aucune erreur
    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
    03-03 09:45:31.822: D/AndroidRuntime(1068): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    03-03 09:45:31.822: D/AndroidRuntime(1068): CheckJNI is ON
    03-03 09:45:32.032: D/AndroidRuntime(1068): --- registering native functions ---
    03-03 09:45:32.753: D/AndroidRuntime(1068): Shutting down VM
    03-03 09:45:32.762: D/dalvikvm(1068): Debugger has detached; object registry had 1 entries
    03-03 09:45:32.782: I/AndroidRuntime(1068): NOTE: attach of thread 'Binder Thread #3' failed
    03-03 09:45:33.312: D/AndroidRuntime(1076): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    03-03 09:45:33.312: D/AndroidRuntime(1076): CheckJNI is ON
    03-03 09:45:33.491: D/AndroidRuntime(1076): --- registering native functions ---
    03-03 09:45:34.182: D/AndroidRuntime(1076): Shutting down VM
    03-03 09:45:34.194: D/dalvikvm(1076): Debugger has detached; object registry had 1 entries
    03-03 09:45:34.202: I/AndroidRuntime(1076): NOTE: attach of thread 'Binder Thread #3' failed
    03-03 09:45:34.743: D/AndroidRuntime(1084): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    03-03 09:45:34.743: D/AndroidRuntime(1084): CheckJNI is ON
    03-03 09:45:35.041: D/AndroidRuntime(1084): --- registering native functions ---
    03-03 09:45:35.732: I/ActivityManager(70): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.jkelany.xml/.XMLUsersActivity }
    03-03 09:45:35.743: D/AndroidRuntime(1084): Shutting down VM
    03-03 09:45:35.743: D/dalvikvm(1084): Debugger has detached; object registry had 1 entries
    03-03 09:45:35.831: I/AndroidRuntime(1084): NOTE: attach of thread 'Binder Thread #3' failed
    03-03 09:45:59.882: D/AndroidRuntime(1092): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    03-03 09:45:59.892: D/AndroidRuntime(1092): CheckJNI is ON
    03-03 09:46:00.172: D/AndroidRuntime(1092): --- registering native functions ---
    03-03 09:46:00.902: D/AndroidRuntime(1092): Shutting down VM
    03-03 09:46:00.913: D/dalvikvm(1092): Debugger has detached; object registry had 1 entries
    03-03 09:46:00.922: I/AndroidRuntime(1092): NOTE: attach of thread 'Binder Thread #3' failed
    03-03 09:46:01.492: D/AndroidRuntime(1100): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    03-03 09:46:01.492: D/AndroidRuntime(1100): CheckJNI is ON
    03-03 09:46:01.682: D/AndroidRuntime(1100): --- registering native functions ---
    03-03 09:46:02.363: D/AndroidRuntime(1100): Shutting down VM
    03-03 09:46:02.372: D/dalvikvm(1100): Debugger has detached; object registry had 1 entries
    03-03 09:46:02.402: I/AndroidRuntime(1100): NOTE: attach of thread 'Binder Thread #3' failed
    03-03 09:46:02.882: D/AndroidRuntime(1108): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    03-03 09:46:02.882: D/AndroidRuntime(1108): CheckJNI is ON
    03-03 09:46:03.102: D/AndroidRuntime(1108): --- registering native functions ---
    03-03 09:46:03.812: I/ActivityManager(70): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.jkelany.xml/.XMLUsersActivity }
    03-03 09:46:03.850: D/AndroidRuntime(1108): Shutting down VM
    03-03 09:46:03.852: D/dalvikvm(1108): Debugger has detached; object registry had 1 entries
    03-03 09:46:03.872: I/AndroidRuntime(1108): NOTE: attach of thread 'Binder Thread #3' failed
    Par contre dans la console je remarque la présence de l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [2014-03-03 10:46:04 - TestXMLParser] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.jkelany.xml/.XMLUsersActivity }
    [2014-03-03 10:46:04 - TestXMLParser] ActivityManager: Warning: Activity not started, its current task has been brought to the front
    merci une autre fois

  6. #6
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Ah autant pour moi, j'ai été trop vite. Trop l'habitude des NetworkOnMainThreadException

    Pour le coup, n'ayant jamais joué avec les chemins sur Android (toujours utilise les primitives d'accès), je ne peux pas vraiment aider. Peut-être que le chemin est déconnant ?
    Autre que ça, remplace ton e.printStackTrace(); par un Log.e(TAG, message, e); où TAG est un tag permettant de filtrer, message est un message explicatif et e est l'exception. De même, je te suggère de réduire de Exception à une granularité plus fine histoire d'éviter de trop en prendre.

    De plus, je te suggère de remplacer getApplicationContext() par this.

    De base, le fait que le Toast ne s'affiche pas me fait penser à une exception masquée.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

Discussions similaires

  1. comment lecture un fichier xml sous windows mobile 6
    Par orman05 dans le forum Windows Mobile
    Réponses: 5
    Dernier message: 01/05/2011, 00h15
  2. lecture un fichier xml sous bash
    Par kandy dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 10/02/2010, 12h28
  3. Lecture/Ecriture d'un fichier XML
    Par andlio dans le forum Windows
    Réponses: 2
    Dernier message: 18/01/2007, 20h15
  4. [C#]Lecture et Ecriture d'un fichier .xml
    Par debug dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/01/2006, 12h41

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