Bonjour,
J'aimerais créer un petit programme qui convertit des fichier XML en fichier texte pour pouvoir lire à la fin ce fichier par Excel 2000, et je n'ai pas la moindre idée sur comment faire quelqu'un à une idée.
Version imprimable
Bonjour,
J'aimerais créer un petit programme qui convertit des fichier XML en fichier texte pour pouvoir lire à la fin ce fichier par Excel 2000, et je n'ai pas la moindre idée sur comment faire quelqu'un à une idée.
Bonjour,
Change l'extension en .txt et le tour est joué ;).
Sinon plus sérieusement, il faut un peu expliquer quelle est la structure de ton fichier XML et quelle doit être celle du fichier texte.
Edit : Même sans ça, je dirais :
1. lire le contenu du fichier XML
2. mapper le contenu tel que voulu dans le fichier texte.
le fichier contient des millier de données et je ne veux afficher que les données dont le chemin est déjà spécifié.
Je ne vois pas où tu as un problème (Edit : sachant que je ne vois pas ce qu'apporte ton dernier message).
Pour lire un fichier XML, il y a :
- La sérialisation/désérialisation (ça c'est bien si tu connais au poil la structure du fichier (ou que tu as un xsd) pour créer les classes qui vont bien pour désérialiser le contenu)
- XmlDocument pour lire directement le fichier et pouvoir le parcourir à ta guise
- Et sans doute d'autres choses
j’essaierai de faire ce que tu me dis .
Qu'est ce que tu veux dire par "lire le fichier par Excel 2000" ?
Tu veux afficher le contenu des éléments ? Les attributs ? Est-ce que tu veux aussi voir les balises ?
Sinon si tu utilises le framework qui va bien, je te conseille d'utiliser Linq To Xml, et donc XDocument pour lire le fichier.
Ca permet de faire du requêtage "à la SQL", et je pense que ça ira bien pour ce que tu veux faire.
Par exemple :
Avec ça, tu as dans elements une collection de tous les éléments <machin> de ton fichier.Code:
1
2
3
4
5 XDocument doc = XDOcument.Load("toto.xml"); var elements = from element in doc.Root.Descendants() where element.Name == "machin" select element;
De la même façon tu peux faire tout ce que tu veux : sélectionner les éléments dont un attribut vaut une certaine valeur, les éléments qui contiennent telle ou telle donnée...
Bonjour,
Je mettrai le point sur une solution déjà postée.
tout d'abord, commences par créé un objet métier qui aura les attribues relatifs au format de sortie.
un tour de serialization/deserialization (selon le sens, objets>XML XML>objets) de ton fichier XML, pour le convertir en une liste d'objet. Après il te restera plus qu'à mettre en place une petite fonction pour formater les attribues de ton objet sous le format souhaité.
Je crois que tout ça est bien compliqué. Qui dit transformation de XML dit XSLT !! Je ne suis vraiment pas un expert en la matière mais je pense que c'est la bonne façon de faire sans avoir à écrire de programme spécifique. Il y a plein de tutos en ligne.
En fait je suis en stage et c'est mon tuteur qui me demande de faire ce programme.
Le but est de transférer les données qui sont utiles du fichier XML vers un simple fichier texte.
Pour cela il y a un fichier texte avec le chemin correspondant aux valeurs voulues pour certaines données.
Le problème c'est que ta demande est trop vague. Le "fichier texte avec le chemin correspondant aux valeurs voulue pour certaines données", peux-tu décrire plus clairement son but ?
Sinon je trouve la solution de chrisdot avec du XSLT attrayante, il faudra coder l'application de la transformation, mais pour ton tuteur lui présenter cette idée montre une certaine recherche de ta part et au moins si tu veux changer la sortie de ton programme, pas besoin de recompiler, juste besoin de modifier le XSLT ce qui est un avantage non négligeable.
En gros Pouvoir parcourir le fichier XML à des endroits spécifique.
Parcourir le fichier Xml .. des endroits spécifiques...
Si tu connais la structure de ton fichier Xml, essaye d'en tirer ce que tu veux en utilisant des requêtes XPATH. cela te retournerait une liste de (node) que tu peut manipuler. ( InnerText entre autre ). après pour écrire cela dans ton fichier Texte, je crois pas que c'est la chose la plus compliquée.
Dac merci.
Je viens de commencer et j'arrive pas à afficher mon fichier Xml dans mon formulairs
voici mon code
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 { try { XmlDocument doc = new XmlDocument(); DialogResult openRes = openFileDialog1.ShowDialog(); if (openRes == DialogResult.OK) doc.Load(openFileDialog1.FileName); textBox1_TextChanged(sender, e); } catch (XmlException) { MessageBox.Show("seul les fichiers ayant l'extension Xml sont autorisés"); } }
:koi:Citation:
textBox1_TextChanged(sender, e);
je ne sais pas ce que tu veux en faire de ton fichier XML, voilà un bout de code qui pourra te donner une idée de comment tirer ce dont tu as besoin de ton fichier.
Code:
1
2
3
4
5
6
7
8
9
10 string myXpathRequest = "Your XPATH Request"; XmlDocument xDoc = new XmlDocument(); xDoc.Load("monFichierXml.xml"); XmlNodeList listNodes = xDoc.SelectNodes(myXpathRequest); foreach (XmlNode node in listNodes) { string InnerText = node.InnerText; int AttributesCount = node.Attributes.Count; string Attribute_1 = node.Attributes[0].InnerText; // node.Attribute["MyAttribute"].InnerText; }
ce que je veux faire c'est créer un bouton ouvrir qui permet de chercher ou est le fichier. Après l'afficher sur ma Forms.
Le problème que j'ai c'est lors de l'appelleCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 private void textBox1_TextChanged(object sender, EventArgs e) { textBox1.Text = openFileDialog1.FileName;//recoit le chemin de mon doc } private void click_btn(object sender, EventArgs e) { XmlDocument doc = new XmlDocument(); DialogResult openRes = openFileDialog1.ShowDialog(); if (openRes == DialogResult.OK) doc.Load(openFileDialog1.FileName); textBox1_TextChanged(sender, e);; } }
Le fichier XML ne s'affiche pas sur ma FormsCode:doc.Load(openFileDialog1.FileName);
Ouiii, mais je ne vois pas de code pour parcourir le fichier XML, encore moins un formulaire...
(doc.load) ca te permet juste de charger le contenu du fichier XML dans la variable (doc) après c'est à toi de le parcourir. d'en tirer ce que tu veux, et bien sur mettre à jour la (form).
le MessageBox te montrera le contenu de ton fichier XML. maintenant pour le parser et en tirer ce dont tu as besoin.... tu as le code précèdent.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 private void bntOpen_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.CheckPathExists = true; dlg.CheckFileExists = true; if (dlg.ShowDialog() == DialogResult.OK) { string Filename = dlg.FileName; XmlDocument xDoc = new XmlDocument(); xDoc.Load(Filename); MessageBox.Show(xDoc.OuterXml); } }
cette ligne qui vient après le Doc.Load c'est pour ??? :koi:Code:textBox1_TextChanged(sender, e);;
tu charges le fichier.. donc le FileName tu l'as déjà... pourquoi récupérer je ne sais quoi ? :aie:Code:
1
2 doc.Load(openFileDialog1.FileName); textBox1_TextChanged(sender, e);
si le MessageBox t'affiche bien le contenu de ton fichier XML ... bah :cry: on va pas re-poster le code...
> Doc.SelectNodes("/Root/Fils/PetitFils");
> une boucle Foreach et parcours ta liste d’éléments.
La programmation ce n'est pas de la magie aussi !!
Je croyais que ça m'afficherai le fichier XML en Format de tableau ou quelque chose comme ça
tu charges le fichier XML... tu veux que le parsing se fasse automatiquement et en plus que ca soit afficher et formatter !! :calim2: et pourquoi pas le généré directement en PDF ... :P
à la place du MessageBox, mets le Code de la boucle foreach, après pour la requête XPATH le plus simple et le plus basic serait de spécifier le chemin des éléments que tu veux récupérer
Code:
1
2
3
4
5
6
7 <root> <fils> <petitfils></petitfils> <petitfils></petitfils> <petitfils></petitfils> </fils> </root>
la requête te ramènera la liste de tous les petits fils.Code:Doc.SelectNodes("/root/fils/petitfils");
maintenant au niveau de ta boucle, tu peux lire les innerText
ou les attribuesCode:<balise>InnerText</balise>
Il te reste plus qu'à foncer à mon avis :oops:Code:<balise att_1="value"></balise>