Java et XML...Exporter un Xml avec DOM - XML/XSL - Programmation
Marsh Posté le 20-02-2006 à 14:56:07
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?
Marsh Posté le 20-02-2006 à 15:01:27
remplace tes \ par des \\
le \ est un caractere d'echappement, il faut donc le doubler dans les chaines de caracteres ...
Marsh Posté le 20-02-2006 à 15:09:22
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
Marsh Posté le 20-02-2006 à 17:16:57
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!!
Marsh Posté le 21-02-2006 à 17:55:04
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...
Marsh Posté le 05-10-2007 à 20:43:13
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...
Marsh Posté le 08-10-2007 à 15:43:15
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)
Marsh Posté le 20-02-2006 à 12:25:33
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.