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

Java Discussion :

utilisation de STax


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de kululu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2009
    Messages : 120
    Par défaut utilisation de STax
    Bonjour à tous

    J'utilise l'api Stax pour gérer un fichier xml (owl pour être plus précis...)

    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
    <owl:DatatypeProperty rdf:ID="has_deathdate">
    	<rdfs:domain rdf:resource="#Human"/>
    	<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#date"/>
    </owl:DatatypeProperty>
    <Human rdf:ID="Gangeśa">
    	<has_birthdate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">0000-00-00</has_birthdate>
    	<has_deathdate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">0000-00-00</has_deathdate>
    </Human>
    <Profession rdf:ID="Feltmaker">
    </Profession>
    <Human rdf:ID="William_Whewell">
    	<has_profession rdf:resource="#Philosopher"/>
    	<has_profession rdf:resource="#Priest"/>
    	<has_profession rdf:resource="#Scientist"/>
    	<has_profession rdf:resource="#Theologian"/>
    	<has_birthdate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1794-05-24</has_birthdate>
    	<has_deathdate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1866-03-06</has_deathdate>
    </Human>
    j'ai mis un bout du fichier owl pour être plus précis

    Donc voici mon problème :
    Je fais un case dedans: XMLStreamReader.START_ELEMENT et aussi un CHARACTERS

    Ainsi il me renvoie "has_profession" ou "has_birthdate" pour les START ELEMENT et il me renvoie les dates de naissances "1794-05-24" ou "1866-03-06" pour les CHARACTERS
    Moi j'aimerais aussi qu'il me renvoie ce qui est en gras: <owl: DatatypeProperty rdf:ID="has_deathdate"> et <rdfs:domain rdf:resource="#Human"/>

    Comment faire ? merci beaucoup

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,

    Ton code aurait été plus explicite. Cependant, vu ce que tu me dis il faut simplement que tu traites dans ton case XMLStreamReader.ATTRIBUTE qui te permet de traiter les attributs. Actuellement ton code ne traite que les éléments.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé Avatar de kululu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2009
    Messages : 120
    Par défaut
    Merci de la réponse mais cela ne résous rien
    Une partie de mon code donne ç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
    XMLStreamReader reader = factory.createXMLStreamReader(new FileReader(file));
     
    			  while (reader.hasNext()) {
    			        int type = reader.next();
     
    			        switch(type){
     
    			        case XMLStreamReader.START_ELEMENT:
    			        	if(!owlList.contains(reader.getLocalName())){
     
    			        		System.out.println("START ELEMENT="+reader.getLocalName());
    			        	}
    			        	break;
     
    			        case XMLStreamReader.CHARACTERS:	
    			        	if (!reader.isWhiteSpace())
    			        		System.out.println("CHARACTERS="+reader.getText());
     
    			        	break;
     
    			        case XMLStreamReader.ATTRIBUTE:
    			        	System.out.println("ATTRIBUTE="+reader.getAttributeType(0));
    			        	System.out.println("JE SUIS ICI");
     
    			        	break;
    Le truc c'est qu'il m'affiche jamais la phrase "JE SUIS ICI" j'en conclus que ce "case" n'est jamais traité donc que mon fichier n'aurait pas d'attribut??? O.o

  4. #4
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    En effet, ca ne marche pas !
    En fait, il faut directement récupérer les attributs sur les ELEMENTS

    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
     
    XMLInputFactory factory = XMLInputFactory.newInstance();
    XMLStreamReader reader;
    try {
      reader = factory.createXMLStreamReader(new FileReader(file));
      while (reader.hasNext()) {
         int type = reader.next();
         switch (type) {
           case XMLStreamReader.START_ELEMENT:
             if (!owlList.contains(reader.getLocalName())) {
                System.out.println("START ELEMENT=" + reader.getLocalName());
                for (int i = 0; i < reader.getAttributeCount(); i++) {
                  String namespace = reader.getAttributePrefix(i);
                  String localName = reader.getAttributeLocalName(i);
                  String value = reader.getAttributeValue(i);
                  System.out.println(namespace + ":" + localName + " = " + value);
                }
             } 
             break;
           case XMLStreamReader.CHARACTERS:
             if (!reader.isWhiteSpace())
               System.out.println("CHARACTERS=" + reader.getText());
             break;
         }
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (XMLStreamException e) {
      e.printStackTrace();
    }
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé Avatar de kululu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2009
    Messages : 120
    Par défaut
    Mais oui je suis bête c'est logique en plus lol >.<

    Merci beaucoup ça me sauve la vie et ça me fait avancer dans mon projet

    Sinon question subsidiaire pour créer une arborescence à partir de mon fichier XML tu me conseillerais quoi?

  6. #6
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    je te conseil d'éviter de poser des questions en message privé pour deux raisons :
    • certains ne répondent pas aux questions posés par MP car le forum est la pour ca
    • si la personne n'a pas la réponse, sur le forum d'autres l'ont peut être


    Revenons aux questions !

    Citation Envoyé par kululu
    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
    <Human rdf:ID="Konstantin_Pobedonostsev">
    	<has_profession rdf:resource="#Jurist"/>
    	<has_profession rdf:resource="#Statesman"/>
    	<has_nationality rdf:resource="#Russian"/>
    	<has_birthdate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1827-05-21</has_birthdate>
    	<has_deathdate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1907-03-23</has_deathdate>
    </Human>
    <owl:Class rdf:ID="philosophy_of_mind">
      <rdfs:subClassOf>
        <owl:Class rdf:ID="Idea"/>
      </rdfs:subClassOf>
    </owl:Class>
    <Human rdf:ID="Erwin_Schroedinger">
    	<has_birthdate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">0000-00-00</has_birthdate>
    	<has_deathdate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">0000-00-00</has_deathdate>
    </Human>
    <Human rdf:ID="Robert_Kilwardby">
    	<has_profession rdf:resource="#Cardinal"/>
    	<has_birthdate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1215-00-00</has_birthdate>
    	<has_deathdate rdf:datatype="http://www.w3.org/2001/XMLSchema#date">1279-09-11</has_deathdate>
    </Human>
    Comment je fais pour récupérer ce qui est en gras :
    En gros je voudrais dire à mon programme
    Si philosophy_of_mind est une Class alors je le met dans vecteur1
    Mais si il possède un subclassof alors il vérifie de quel classe il est (dans mon exemple il est une sous classe de "Idea" ) et dans ce cas je le met dans le vecteur2

    Avec ta technique j'ai pu récupérer les attributs mais pas ce qui a en gras
    c'est normal la lecture du fichier se fait de façon séquentiel, donc j'imagine que tu vas stocker philosophy_of_mind avant même d'avoir vérifier s'il y a un tag subclassof. Pour cela il faut changer ton code afin de stocker philosophy_of_mind uniquement lorsque tu auras atteind le XMLStreamReader.END_ELEMENT correspondant au tag philosophy_of_mind.

    Citation Envoyé par kululu
    Enfin dernière question : que me conseilles tu pour créer l'arborescence d'un fichier xml
    Moi je stocke des vecteurs dans des vecteur : chaque sous vecteur est un noeud et ce dernier a donc pour père le vecteur dans lequel il fait partie et pour fils les éléments qu'il contient
    Cela dépend des infos que tu gardes, de la taille du fichier xml et aussi de la façon dont tu vas travailler avec ces données.

    tu peux :
    • Créer tes propres objets pour stocker les données
    • Utiliser les APIs DOM, qui te permet de manipuler directement des objets Document, Element, Attribut, ..
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    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. [StAX] Installer et utiliser StAX
    Par sgimfh dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 05/02/2008, 17h24
  2. [StAX] Probleme a l'utilisation de stax a cause de rt.jar
    Par progamer54 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 27/11/2007, 11h32
  3. [staf/stax] comment utiliser staf / stax por creer des test
    Par Mokhtar BEN MESSAOUD dans le forum Outils
    Réponses: 1
    Dernier message: 17/03/2006, 14h39
  4. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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