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

Collection et Stream Java Discussion :

Remplissage et appel d'un tableau de String


Sujet :

Collection et Stream Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 27
    Points : 26
    Points
    26
    Par défaut Remplissage et appel d'un tableau de String
    Salut tout le monde
    j'ai une méthode qui permet de retourner un tableau de String.En effet cet méthode prend comme entrée la racine de fichier xml à parser,et le nom de balise à recherché.
    Dans mon exemple si le nom de la balise égale à <collectionlink> alors on extraire le contenu de la balise <collectionlink> et le met dans un tableau.
    Ce tableau contient la liste des contenus des balises <collectionlink>
    Mon code manque la partie remplissage,et comment appeler
    cette fonction.Merci d'avance
    -Pseudo code de fichier xml:
    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
    <?xml version="1.0" encoding="utf-8"?>
    <article>
    <name id="85199">Kremlin</name>
    <conversionwarning>0</conversionwarning>
    <body>
    <p>On peut définir le mot 
    <emph3>kremlin</emph3>comme la citadelle de la ville. Les villes
    anciennes russes n'avaient pas de murailles, exceptée la partie
    centrale avec la 
    <collectionlink xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="581.xml">cathédrale</collectionlink>, le
    palais du souverain de la ville, etc.</p>
    <p>Si on parle du kremlin, on pense surtout au 
    <unknownlink src="kremlin de Moscou">kremlin de
    Moscou</unknownlink>, qui est une ville dans la ville, un
    ensemble de palais, d'églises et de cathédrales, enserré dans des
    murailles rouges. Il est certainement le kremlin le plus renommé.
    Aussi il existe plusieurs autres kremlins en 
    <collectionlink xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="2549.xml">Russie</collectionlink>, par exemple le
    kremlin du 
    <collectionlink xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="56240.xml">Novgorod</collectionlink>, 
    <unknownlink src="Pskov">Pskov</unknownlink>, 
    <unknownlink src="Kazan">Kazan</unknownlink>et autres villes
    anciennes.</p>
    <p>Le Kremlin de Moscou est un des quartiers le plus célèbre de la
    ville .</p>................................................
    -La méthode Java:
    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
     
    public static String[] afficheTitre(Element _element, String _noeud){
    	String titree[] = null;
    	int i=0;
    	List<Element> tmp = new ArrayList<Element>( _element.getChildren());
     
     
    	for (Element courant : tmp) {
     
    		if (courant.getName().equals(_noeud)) {
     
    	String titre = courant.getText();
    	System.out.println("Titre "+i+" est : "+titre);
    		i++;
    		}
    		else {
    			afficheTitre(courant, _noeud);
    			}
    		}
    	return titree;
     
     
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    premièrement il plus facile de créer une liste et de la convertir en tableau à la fin, parce que tu ne connais pas d'avance le nombre d'éléments qui va correspondre à ta condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public static String[] getTitres(Element _element, String _noeud){
    	List<String> titres = new ArrayList<String>();
    	for (Element courant : _element.getChildren()) {
     
    		if (courant.getName().equals(_noeud)) {
     
                        titres.add( extraireTexte(courant) );
     
    		}
     
            }
    	return titres.toArray(new String[titres.size()]);
     
    }
    Maintenant, il faut définir la méthode extraireTexte(Element element). Le problème c'est que l'élément CollectionLink ne contient pas forcément que du texte on dirait, mais une structure qui me semble être du xhtml, et donc qui va être parsée sous forme d'arborescence d'Element.

    S'il s'agit vraiment de texte pur un element.getText() suffit.

    Sinon, le plus simple éventuellement, et d'extraire les éléments fils, de créer un nouvel élément root bidon, d'y ajouter les éléments fils extraits, de serialiser en String ce nouvel arbre, et de virer les tags du root de ce texte (le premier ouvrant et le dernier fermant).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 27
    Points : 26
    Points
    26
    Par défaut Remplissage et appel fonction retourne un tableau de string
    Citation Envoyé par joel.drigo Voir le message
    Salut,

    premièrement il plus facile de créer une liste et de la convertir en tableau à la fin, parce que tu ne connais pas d'avance le nombre d'éléments qui va correspondre à ta condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public static String[] getTitres(Element _element, String _noeud){
    	List<String> titres = new ArrayList<String>();
    	for (Element courant : _element.getChildren()) {
     
    		if (courant.getName().equals(_noeud)) {
     
                        titres.add( extraireTexte(courant) );
     
    		}
     
            }
    	return titres.toArray(new String[titres.size()]);
     
    }
    Maintenant, il faut définir la méthode extraireTexte(Element element). Le problème c'est que l'élément CollectionLink ne contient pas forcément que du texte on dirait, mais une structure qui me semble être du xhtml, et donc qui va être parsée sous forme d'arborescence d'Element.

    S'il s'agit vraiment de texte pur un element.getText() suffit.

    Sinon, le plus simple éventuellement, et d'extraire les éléments fils, de créer un nouvel élément root bidon, d'y ajouter les éléments fils extraits, de serialiser en String ce nouvel arbre, et de virer les tags du root de ce texte (le premier ouvrant et le dernier fermant).
    Effectivement Joél,merci encore pour votre aide
    Voici la solution:
    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
    	public static String[] afficheTitre(Element _element, String _noeud){
    		List<String> titree = new ArrayList<String>();
                    afficheTitre(_element, _noeud, titree);
    		return titree.toArray(new String[titree.size()]);
    	}
     
            private static void afficheTitre(Element _element, String _noeud, List<String> titree){
            	List<Element> tmp = new ArrayList<Element>( _element.getChildren());
    		for (Element courant : tmp) {
     
    			if (courant.getName().equals(_noeud)) {
     
    	                    titree.add( courant.getText() );
     
    			}
    			else {
    				afficheTitre(courant, _noeud, titree);
     			}
     
    	        }
     
            }

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Maintenant que l'approche "passer par une List<String>" a été vue et comprise, parlons d'encore mieux :

    - Renvoyer une List<String>
    - Se servir de cette List<String> sans la convertir en tableau
    - Oublier les tableaux.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplissage d'un tableau à partir d'un tableau de String
    Par aljessy dans le forum Composants
    Réponses: 4
    Dernier message: 18/08/2012, 13h27
  2. tableau de string (declaration + remplissage)
    Par cortex59 dans le forum C++
    Réponses: 4
    Dernier message: 13/01/2009, 11h45
  3. Réponses: 4
    Dernier message: 21/04/2007, 20h02
  4. Remplissage d'un tableau de string (débutant)
    Par valanagrid dans le forum C++
    Réponses: 4
    Dernier message: 12/11/2006, 18h39
  5. [JComboBox] Remplissage avec tableau de String
    Par linkit dans le forum Composants
    Réponses: 2
    Dernier message: 26/05/2005, 21h39

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