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

Format d'échange (XML, JSON...) Java Discussion :

[JAVA][XML] récupérer des valeurs de balises après filtrage


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Par défaut [JAVA][XML] récupérer des valeurs de balises après filtrage
    Bonjour,

    j'ai grâce à votre aide pu avancer dans un projet. celui-ci me permet de récupérer le texte entre des balises.
    Afin de faire évoluer ce code, je désire maintenant appliquer un filtre à celui-ci comme suit:

    voici l'exemple de xml

    Code XML : 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
    <PRE>
    P0695/20 NOTAMN
    Q) LFFF/QOBAW/IV/M  /E /000/006/4940N00327E001
    A) LFFF B) 2002260844 C) PERM
    E) MEASURE MAST NR02087 AT VERSIGNY AISNE WITHDRAWN 
    PSN : 494007N 0032706E
    CREATED: 26 Feb 2020 08:45:00 
    SOURCE: EUECYIYN
    </PRE>
    <PRE>
    P0676/20 NOTAMN
    Q) LFFF/QOBCE/IV/M  /E /000/013/4634N00259E001
    A) LFFF B) 2002241539 C) PERM
    E) MEASURE MAST RDL169/8.5NM LFJU AD : 
    PSN : 463423N 0025857E 
    HEIGHT : 334FT 
    ELEV : 1213FT 
    LIGHTING : DAY AND NIGHT
    CREATED: 24 Feb 2020 15:39:00 
    SOURCE: EUECYIYN
    </PRE>
    <PRE>
    P0662/20 NOTAMN
    Q) LFFF/QOLAS/IV/M  /E /000/010/4909N00315E001
    A) LFFF B) 2002211649 C) 2003210800
    E) OBST NR E0229 LIGHTS OUT OF SERVICE (2 OUT OF 8 WIND TURBINES)
    PSN : 490903N 0031449E
    HEIGHT : 427FT
    ELEV: 984FT
    CREATED: 21 Feb 2020 16:51:00 
    SOURCE: EUECYIYN
    </PRE>

    le code Java ci-dessous me permet de récupérer toute les attributs entre les balises (et d'une certaine manière me convient très bien). Sauf que dans mon évolution, j'ai vu qu'à l'aide de regex je peux appliquer un filtre (j'ai pu lire ça dans un tuto).
    Par conséquent je souhaiterais savoir à quel moment je dois appliquer ce filtre.
    voici ci-dessous mon code 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
    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
    package extraction_xml;
     
    import java.io.*;
    import javax.xml.xpath.*;
    import org.w3c.dom.Document;
    import org.xml.sax.SAXException;
    import javax.xml.namespace.*; 
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
     
    public class Extraction_avec_filtre {
     
    	static File fichier;
     
    	// Constructeur 
    	public Extraction_avec_filtre (String url){
    		fichier = new File(url);
    	}
     
    	// Méthodes 
    	/**
             * créer une instance de XPath et lui faire évaluer une XPathExpression
         * @param file
         * @param expression
         * @param retour
         * @return 
             */
    	public String evaluerDOM(File file, String expression, QName retour){
    		String texteCopie=null;
     
    		try{
    			DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
    			DocumentBuilder constructeur = docBuilderFactory.newDocumentBuilder();
    			Document document = constructeur.parse(file);
     
    			//création du XPath 
    			XPathFactory fabrique = XPathFactory.newInstance();
    			XPath xpath = fabrique.newXPath();
     
    			//évaluation de l'expression XPath
    			XPathExpression exp = xpath.compile(expression);
    			NodeList resultat = (NodeList) exp.evaluate(document,XPathConstants.NODESET); // récupère la liste de Node correspondant au xpath (donc des pre)
     
    			StringBuilder sb=new StringBuilder(); // pour faire la concaténation
    			for(int i=0; i<resultat.getLength(); i++) { // parcours
    				if ( i!=0 ) { // pour avoir des séparations entre chaque node, sauf pour le premier
                                        sb.append("\n--------------------------\n");//ajout d'une ligne de séparation par exemple
                                        //sb.append("\n"); // ajoute une ligne vide 
    				}
     
                                    //sb.append("Ligne ").append(i+1).append("\n");//ajout d'un titre par exemple
                                    sb.append("\n");//ajout d'une ligne de séparation par exemple
    				Node pre = resultat.item(i); // on récupère le node d'index i 
    				sb.append(pre.getTextContent()); // concaténation du texte du node
    			}
     
    			texteCopie=sb.toString(); // 
    		}catch(XPathExpressionException xpee){
    			xpee.printStackTrace();
    		} catch (ParserConfigurationException e) {
    			e.printStackTrace();
    		} catch (SAXException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		return texteCopie;
    	}
     
    	/**
             * @param args
             */
    	public static void main(String[] args) throws IOException {
    		Extraction test = new Extraction("/Users/moi/Desktop/testNOTAM/MonFichier.xml");
    		String resultat = test.evaluerDOM(fichier, "//PRE", XPathConstants.STRING);
     
                   /* File Notams = new File("/Users/moi/Desktop/notams_test.txt") ;
                try (PrintWriter out = new PrintWriter(new FileWriter(Notams))) {
                    out.write(resultat) ; //écris bonjour dans le fichier
                    out.println(); //fais un retour à la ligne dans le fichier
                    out.close() ; //Ferme le flux du fichier, sauvegardant ainsi les données.*/
                    System.out.println(resultat);
                } 
    	}
     
    /*}*/
    Par exemple, supposons une fenêtre avec un radio bouton qui me permet de filtrer et de récupérer juste l'ensemble du texte entre balise <PRE> si celle-ci contient le mot "QOBCE" comment pourrais-je faire s'il vous plait ?
    Dois-je utiliser dans le string builder mon filtre??? Je vous avoue avoir de grosse difficultés...
    Par avance merci pour votre aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Par défaut
    personne pour m'aider s'il vous plait?
    malgré les instructions dans les FAQ/Tuto pas de solutions

Discussions similaires

  1. Récupérer des valeurs entre balises dans textView
    Par jeremyvb11 dans le forum Composants graphiques
    Réponses: 0
    Dernier message: 07/11/2017, 12h05
  2. [XML] Récupérer la valeur des attributs
    Par Elyon64 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 10/03/2008, 19h07
  3. [C#-XML] Récupérer les valeurs des noeuds enfants
    Par cyllix dans le forum Windows Forms
    Réponses: 1
    Dernier message: 23/06/2006, 11h54
  4. [SimpleXML] Parser un XML et en récupérer des valeurs
    Par mickael.be dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 15/04/2006, 15h08
  5. code java pour récupérer la valeur d'un neoud XML
    Par MASSAKA dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 14/10/2005, 15h17

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