Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1527 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  Java et XML...Exporter un Xml avec DOM

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Java et XML...Exporter un Xml avec DOM

n°1309552
flavio_dev
Posté le 20-02-2006 à 12:25:33  profilanswer
 

Bonjour à tous.
J'aimerais savoir comment exporter un fichier XML avec API dom.
Voila mon probleme :
Je suis en train de créer une simulation d'un reseau peer to peer. J'aimerai qu'à la lecture de ce XML :
 
<?xml version="1.0" encoding='ISO-8859-1' standalone ='yes'?>
<Rezeau xml;lang='fr'>
 
 <SuperPair>
  <nomSP >SP1</nomSP>
<voisin>SP2</voisin>
<voisin>SP4</voisin>
<voisin>SP5</voisin>
 
 </SuperPair>
 <SuperPair>
  <nomSP >SP2</nomSP>
<voisin>SP1</voisin>
<voisin>SP3</voisin>
<voisin>SP6</voisin>
 
 </SuperPair>
 <SuperPair>
  <nomSP>SP3</nomSP>
<voisin>SP2</voisin>
<voisin>SP7</voisin>
<voisin>SP4</voisin>
 
 </SuperPair>
 <SuperPair>
  <nomSP>SP4</nomSP>
<voisin>SP1</voisin>
<voisin>SP8</voisin>
<voisin>SP3</voisin>
 
 </SuperPair>
 <SuperPair>
  <nomSP>SP5</nomSP>
<voisin>SP8</voisin>
<voisin>SP1</voisin>
<voisin>SP6</voisin>
 </SuperPair>
 <SuperPair>
  <nomSP>SP6</nomSP>
<voisin>SP7</voisin>
<voisin>SP2</voisin>
<voisin>SP5</voisin>
 </SuperPair>
 <SuperPair>
  <nomSP>SP7</nomSP>
<voisin>SP6</voisin>
<voisin>SP8</voisin>
<voisin>SP3</voisin>
 </SuperPair>
 <SuperPair>
  <nomSP>SP8</nomSP>
<voisin>SP5</voisin>
<voisin>SP7</voisin>
<voisin>SP4</voisin>
 </SuperPair>
 <Pair>
  <nomP>P1.1</nomP>
<seraAttache>SP1</seraAttache>
  <keyword>a</keyword>
  <keyword>b</keyword>
  <keyword>c</keyword>
 </Pair>
 <Pair>
  <nomP>P2.1</nomP>
<seraAttache>SP1</seraAttache>
  <keyword>d</keyword>
 </Pair>
 <Pair>
  <nomP>P3.1</nomP>
<seraAttache>SP1</seraAttache>
  <keyword>a</keyword>
  <keyword>d</keyword>
 </Pair
 <Pair>
  <nomP>P1.2</nomP>
<seraAttache>SP2</seraAttache>
  <keyword>d</keyword>
  <keyword>e</keyword>
  <keyword>c</keyword>
 </Pair>
 <Pair>
  <nomP>P2.2</nomP>
<seraAttache>SP2</seraAttache>
<keyword>d</keyword>
  <keyword>a</keyword>
 </Pair>
 <Pair>
  <nomP>P1.3</nomP>
<seraAttache>SP3</seraAttache>
  <keyword>e</keyword>
  <keyword>f</keyword>
 </Pair>
 <Pair>
  <nomP>P2.3</nomP>
<seraAttache>SP3</seraAttache>
  <keyword>e</keyword>
  <keyword>b</keyword>
  <keyword>c</keyword>
 </Pair>
 <Pair>
  <nomP>P3.3</nomP>
<seraAttache>SP3</seraAttache>
  <keyword>e</keyword>
 </Pair>
 <Pair>
  <nomP>P1.4</nomP>
<seraAttache>SP4</seraAttache>
  <keyword>a</keyword>
  <keyword>b</keyword>
  <keyword>d</keyword>
 </Pair>
 <Pair>
  <nomP>P2.4</nomP>
<seraAttache>SP4</seraAttache>
  <keyword>f</keyword>
 </Pair>
 <Pair>
  <nomP>P1.5</nomP>
<seraAttache>SP5</seraAttache>
  <keyword>f</keyword>
  <keyword>b</keyword>
  <keyword>c</keyword>
 </Pair>
 <Pair>
  <nomP>P2.5</nomP>
<seraAttache>SP5</seraAttache>
  <keyword>a</keyword>
 </Pair>
 <Pair>
  <nomP>P1.6</nomP>
<seraAttache>SP6</seraAttache>
  <keyword>e</keyword>
 </Pair>
 <Pair>
  <nomP>P1.7</nomP>
<seraAttache>SP7</seraAttache>
  <keyword>f</keyword>
 </Pair>
 <Pair>
  <nomP>P1.8</nomP>
<seraAttache>SP8</seraAttache>
  <keyword>f</keyword>
  <keyword>b</keyword>
 </Pair>
 <Pair>
  <nomP>P2.8</nomP>
<seraAttache>SP8</seraAttache>
  <keyword>c</keyword>
 </Pair>
</Rezeau>

 
l'api DOM me créé les classes SUPER PAIR, et PAIR... bref, voici ce que j'ai commencé a faire :
 
try{
          // création d'une fabrique de documents
          DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
          // création d'un constructeur de documents
          DocumentBuilder constructeur = fabrique.newDocumentBuilder();
          // lecture du contenu d'un fichier XML avec DOM
          File xml = new File("U:\JAVA\My Workspace\Projet\Essai XML\Essai XML\XML.xml" );
          Document document = constructeur.parse(xml);
          //traitement du document
       }catch(ParserConfigurationException pce){
          System.out.println("Erreur de configuration du parseur DOM" );
          System.out.println("lors de l'appel à fabrique.newDocumentBuilder();" );
       }catch(SAXException se){
          System.out.println("Erreur lors du parsing du document" );
          System.out.println("lors de l'appel à construteur.parse(xml)" );
       }catch(IOException ioe){
          System.out.println("Erreur d'entrée/sortie" );
          System.out.println("lors de l'appel à construteur.parse(xml)" );
       }
 
En bleu, un autre probleme qui survient : le ien vers mon fichier XML est faux, car l'erreur du "ATTENTION , pas le droit d'utiliser les \" s'affiche. Comment faire le lien...le mettre dans le meme dossier? Par getDocumentURI();?
 
Merci à tous pour votre aide.

mood
Publicité
Posté le 20-02-2006 à 12:25:33  profilanswer
 

n°1309667
flavio_dev
Posté le 20-02-2006 à 14:56:07  profilanswer
 

je me suis arrangé pour ke l'adresse du XML soit trouvé!!!
Je suis passé par un URL... du coup plus de probleme
http://www.laltruiste.com/document [...] ement.html
MERCI LALTRUISTE!!
Mais maintenant, je tombe à coup sur dans l'exception!!! :
 
Erreur d'entrée/sortie
lors de l'appel à construteur.parse(xml)
 
ARF!!
Quelqu'un peut-il m'aider?


Message édité par flavio_dev le 20-02-2006 à 15:03:52
n°1309668
souk
Tourist
Posté le 20-02-2006 à 15:01:27  profilanswer
 

remplace tes \ par des \\
le \ est un caractere d'echappement, il faut donc le doubler dans les chaines de caracteres ...

n°1309681
flavio_dev
Posté le 20-02-2006 à 15:09:22  profilanswer
 

Merci SOUK, ca a l'air de marcher. je ne tombe plus dans mon exception... ca à l'air bon... si j'ai d'autres problemes, je compte sur toi? ;)
A tout à l'heure, parce que je pense que ca va pas tarder :)
Merci


Message édité par flavio_dev le 20-02-2006 à 15:09:47
n°1309830
flavio_dev
Posté le 20-02-2006 à 17:16:57  profilanswer
 

Re coucou!!! J'ai encore un probleme!!! ;)
Voila, cette fois ci, j'ai testé la lecture de mon XML :
 
    File xml = new File("U:\\Project\\XML.xml" );
           Document document = constructeur.parse(xml);  
          System.out.println("lecture du contenu d'un fichier XML avec DOM" );

         //traitement du document
           
          Element racine = document.getDocumentElement();
          //recuperation de la racine
          System.out.println("Recupération de la racine de l'arborescence" );
           
          System.out.println("Voici le nom de la racine : "+racine.getNodeName());
           
           
        /* NamedNodeMap atribRacine = racine.getAttributes();
          System.out.println("L'attibut de la racine : "+atribRacine.getNamedItem(racine.getNodeName()));
          */

           
          Node premierEnfant = racine.getFirstChild();
         System.out.println("Voici le nom du premier enfant avec nodename: "+premierEnfant.getNodeName());
         System.out.println("Voici le nom du premier enfant avec localname: "+premierEnfant.getLocalName());
         
          NodeList liste = racine.getChildNodes();
         // getChildNodes : retourne une NodeList contenant l'ensemble des nodes enfants.
          System.out.println("Recupération des nodes enfants" );
           
          for(int i=0; i<liste.getLength(); i++){
           Node elm = liste.item(i);
           //Node elm = liste.item(i);
           String name = elm.getNodeName();
           //NamedNodeMap attribute = elm.getAttributes();
           
           System.out.println("Le nom : "+name);
          //System.out.println("L'attibut : "+attribute.getNamedItem(name));
          }
 
Voici les resultats qui s'affichent à l'ecran de console :

création d'une fabrique de documents
création d'un constructeur de documents
lecture du contenu d'un fichier XML avec DOM
Recupération de la racine de l'arborescence
Voici le nom de la racine : Rezeau
Voici le nom du premier enfant avec nodename: #text
Voici le nom du premier enfant avec localname: null
Recupération des nodes enfants
Le nom : #text
Le nom : SuperPair
Le nom : #text
Le nom : SuperPair
Le nom : #text
Le nom : SuperPair
....... ... ..

etc..
 
Que veux dire le #text?
Pourquoi la racine est un element, alors que les enfants sont des Nodes?
Comment avoir que des "SuperPair", et pas les "#text"!!?
Quel est la difference entre NodeName et LocalName?
(Voici le nom du premier enfant avec nodename: #text
Voici le nom du premier enfant avec localname: null)
Et le sumum, c'est si quelqu'un arrive a trouver comment acceder à mes balises <nomSP >SP1</nomSP> et <voisin>SP2</voisin> ?
Merci d'avance les pros de XML!!


Message édité par flavio_dev le 20-02-2006 à 17:30:02
n°1310897
flavio_dev
Posté le 21-02-2006 à 17:55:04  profilanswer
 

Re coucou. Je remarque que personne n'a pu m'aider. mais j'ai quand meme pu m'en sortir. En revanche, je voulais savoir s'il était possible de faire une distinction entre  <nomSP >SP1</nomSP> et <voisin>SP2</voisin> . en effet, le premier est est un string, et le deuxieme, j'aimeraisque ce soit un objet de type Superpair....et non une string, car à la création de mes objet, tous mes attributs sont donc d etype String... Bref, si les pros de l'info XML sont dans le coin...

n°1619974
soul8
Posté le 05-10-2007 à 20:43:13  profilanswer
 

salut j'ai quelques problèmes aussi pour faire une ptite api pour parser facilement des document xml en javascript
 
Pour ta question sur l'affichage de #text une fois sur deux je viens de voir quen fait childNodes contient:
à lindice 0 le contenu du noeud parent  
puis à lindice 1 le noeud fils en question,
indice 2 le contenu du fils en question,
indice 3 le noeud fils suivant,
etc...
 
Cest bizarre je sais...


Message édité par soul8 le 05-10-2007 à 20:45:51
n°1620602
TheRom_S
Posté le 08-10-2007 à 15:43:15  profilanswer
 

lol Soul8, entendu parler de la différence entre Java et javascript qui vient d'un petit détail entre les 2 qui a son importance : ça n'a RIEN à voir ;) (ouf, sans insultes, c't'un exploit)
 
Sinon,
 
Que veux dire le #text?
les #text, ça correspond à des Nodes de type Text (l'interface org.w3c.dom.Text) que sont tes espaces et autres retours à la ligne entre tes éléments SuperPair
 
Pourquoi la racine est un element, alors que les enfants sont des Nodes?
un Element est aussi un Node
 
Comment avoir que des "SuperPair", et pas les "#text"!!?
Vire tes espaces
 
Quel est la difference entre NodeName et LocalName?
pas sûr mais je crois que localName ne contient pas le namespace

Et le sumum, c'est si quelqu'un arrive a trouver comment acceder à mes balises <nomSP >SP1</nomSP> et <voisin>SP2</voisin> ?

ben tu prends déjà ton élément racine <Rezeau> et pour celui-ci tu obtiens les <SuperPair> et les <Pair> grâce à getChildNodes et en faisant une boucle dessus, vu que je t'ai dit que Element était aussi un Node, c'est que tu peux utiliser getChildNodes sur ceux obtenus la première fois, donc dans ta boucle, tu refais la même chose avec les sous-éléments. Sinon, pour virer tes espaces, t'a qu'à gérer de filtrer les Nodes de type Text ... (comme ça tu peux éviter de les enlever à la main et avoir un truc illisible à la fin)


Message édité par TheRom_S le 08-10-2007 à 15:44:02

---------------
The Rom's, à votre service

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  Java et XML...Exporter un Xml avec DOM

 

Sujets relatifs
[JAVA] attendre autrement qu'avec une boucle vide[JS] Récupération d'un fihcier XML externe
[Java] Problème d'avant plan d'un canvasUML et Java
[JAVA] Redimensionner une image via une matrice[Java ] api avec vue et editeur
[JS] récuperer du XMLprobleme Mysql / java
[ java ] comment créé un fichier + d'autes question dans le futur..[Hibernate]Filtrer une requete avec une methode java
Plus de sujets relatifs à : Java et XML...Exporter un Xml avec DOM


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR