Modification d'un gros fichier texte sans <CR><LF>

cs_Kloun Messages postés 23 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 23 octobre 2003 - 20 mars 2003 à 11:02
JMC70 Messages postés 77 Date d'inscription samedi 9 novembre 2002 Statut Membre Dernière intervention 6 juillet 2014 - 14 nov. 2004 à 18:52
Bonjour,
J'ai un très gros fichier XML à lire en VB en mode texte.
Le problème est qu'il n'y a pas de retour chariot dans le fichier. Quand je lis la ligne, ça fait tout planter.
Mon but est de rajouter des retours chariot (entre chaque balise XML par exemple).
Comment faire sans avoir à récupérer toute la ligne ?

Merci

6 réponses

fredlynx Messages postés 662 Date d'inscription mercredi 16 janvier 2002 Statut Modérateur Dernière intervention 16 octobre 2010 3
20 mars 2003 à 13:15
je ne vois pas ce qui peut tout planter ... il fait quelle taille ton fichier ?

<center>http://www.fredlynx.com
</center>
0
cs_Kloun Messages postés 23 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 23 octobre 2003
20 mars 2003 à 15:21
Le fichier en question fait 6Mo
Il y a 4 lignes mais tout est sur une seul ligne. Quand on fait un read, ça plante

Kloun
0
fredlynx Messages postés 662 Date d'inscription mercredi 16 janvier 2002 Statut Modérateur Dernière intervention 16 octobre 2010 3
20 mars 2003 à 15:56
C chelou !? Comment tu fais pour lire ton fichier tu utilises quelles commandes ?
En quel mode tu l'ouvres ?

<center>http://www.fredlynx.com
</center>
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
20 mars 2003 à 15:59
Bonjour
Voici un petit code qui te recopie le fichier d'origine (sans le modifier) dans un nouveau fichier en ajoutant un VbCrLf après chaque fin de balise (de début ou de fin)

Dim Octet As String * 1, Ligne As String
Open "C:\CheminOrigine\FichierOriginal.xml" For Binary As #1
Open "C:\CheminDestination\FichierModifié.xml" For Output As #2
Do While Not EOF(1)
Get 1, , Octet
Ligne = Ligne & Octet
If Octet = ">" Then
Ligne = Ligne & vbCrLf
Print #2, Ligne
Ligne = ""
End If
Loop
Close
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Kloun Messages postés 23 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 23 octobre 2003
20 mars 2003 à 16:48
Merci,

J'essaie ça demain (ou plus tard ...)
0
JMC70 Messages postés 77 Date d'inscription samedi 9 novembre 2002 Statut Membre Dernière intervention 6 juillet 2014
14 nov. 2004 à 18:52
il n'y a pas de retour à la ligne dans les fichiers xml. C'est le navigateur ou le parseur qui doit interpréter les balises.
Ceci fait qu'il est difficile de l'attaquer depuis VB comme fichier texte pur (à moins de l'ouvrir en binaire comme le suggère rene38). Aussi, il est préférable d'utiliser le DOM pour lire les données.
Voir http://www.vbfrance.com/code.aspx?id=27570 pour la gestion des fichiers xml en vb6.
JMC70
0
Rejoignez-nous