Bonjour le forum,
Je reçois régulièrement dans mes fichiers xml, des données avec des caractères ''fantaisistes'' que je n'arrive pas à intégrer automatiquement dans mon logiciel métier.
pour l'instant, les fichiers sont corrigés à la main.
Ci-dessous un code pour supprimer automatiquement certains caractères spéciaux qui ne sont pas acceptés par mon logiciel métier.
	
	
	
	
	
		
Il arrive souvent que je trouve dans les champs des caractères spéciaux tels que : ?, !, /
Le problème est que ces caractères sont dans la structure du xml et ne peuvent pas être supprimés sans compromettre l'intégrité du fichier.
Exemple de fichier xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- XML Descriptif -->
<!--DOCTYPE Expeditions -->
-<Expeditions>
-<Entete-Message>
<Code-GTF/>
<Date-Expedition>20180222</Date-Expedition>
<Creation-Time>20180222 15:22:34</Creation-Time>
</Entete-Message>
-<Expedition>
<Type-Expedition>EXP</Type-Expedition>
<Ref-Expedition>896321318</Ref-Expedition>
<Num-Recepisse/>
<RFF-Expedition>0001690032</RFF-Expedition>
-<Expediteur>
<Code-Expediteur/>
<Nom-Expediteur>NOM DE L'EXPEDITEUR</Nom-Expediteur>
<Ad1-Expediteur>TEST 18</Ad1-Expediteur>
<Ad2-Expediteur/>
<Pays-Expediteur>PL</Pays-Expediteur>
<CP-Expediteur>67-100</CP-Expediteur>
<Ville-Expediteur>EXPEDITEUR !</Ville-Expediteur>
</Expediteur>
-<Destinataire>
<Code-Destinataire/>
<Nom-Destinataire>NOM DU DESTINATAIRE</Nom-Destinataire>
<Ad1-Destinataire>25 AVENUE DE LA REPUBLIQUE</Ad1-Destinataire>
<Ad2-Destinataire/>
<Pays-Destinataire>FR</Pays-Destinataire>
<CP-Destinataire>75000</CP-Destinataire>
<Ville-Destinataire>PARIS</Ville-Destinataire>
</Destinataire>
-<Premiere-PF>
<Code-1PF>Pas de code reseau pour le trafic de sous-traitance position recep XXXXXXXXXX</Code-1PF>
<Date-1PF>20180222 00:00</Date-1PF>
</Premiere-PF>
<Code-Produit>M?ES</Code-Produit>
<Nb-Palette>0</Nb-Palette>
<Nb-Paleur>6</Nb-Paleur>
<Nb-Palsol>0</Nb-Palsol>
<Nb-EqPal>0</Nb-EqPal>
<Metre-Plancher>0</Metre-Plancher>
<Poids>3600,000</Poids>
<Nb-UM>6</Nb-UM>
<Quantite/>
<Volume>0</Volume>
<Code-Contrat-Vente/>
<Code-Service>N</Code-Service>
<Rdv> </Rdv>
<Max-Liv> </Max-Liv>
<Inst-Speciales>TEXTE LIBRE</Inst-Speciales>
<Code-Pd>N</Code-Pd>
<Code-PF-Imp>Pas de code reseau pour //le trafic// de sous-traitance position RecepXXXXXXXXXX</Code-PF-Imp>
<Cpte-Fact/>
<Ex-TVA>E</Ex-TVA>
<Nb-EqPal-Dgs>0</Nb-EqPal-Dgs>
<Metre-Plancher-Dgs>0</Metre-Plancher-Dgs>
<ADRs> </ADRs>
<Doc-Douane>N</Doc-Douane>
<Acquis>N</Acquis>
-<Cb-UMs>
<Cb-UM>123456??312D221006</Cb-UM>
<Cb-UM>123456153312222003</Cb-UM>
<Cb-UM>235692153312223000</Cb-UM>
<Cb-UM>P2222215?312224005</Cb-UM>
<Cb-UM>PL2309153312225002</Cb-UM>
<Cb-UM>589632153312226007</Cb-UM>
</Cb-UMs>
</Expedition>
</Expeditions>
Ma question :
Comment supprimer également ces caractères sans compromettre la structure du xml ?
L'un de vous aurait-il une solution ? Il faudrait que le code fonctionne uniquement entre > et < ou alors convertir le xml en txt, le corriger et refaire un xml.
Bien cordialement et bonne journée à tous
Ivan
	
		
			
		
		
	
				
			Je reçois régulièrement dans mes fichiers xml, des données avec des caractères ''fantaisistes'' que je n'arrive pas à intégrer automatiquement dans mon logiciel métier.
pour l'instant, les fichiers sont corrigés à la main.
Ci-dessous un code pour supprimer automatiquement certains caractères spéciaux qui ne sont pas acceptés par mon logiciel métier.
		VB:
	
	
	Sub SupprimerCaracteres()
Dim nf As String
nf = CreateObject("WScript.Shell").specialFolders("Desktop")
  Open nf & "\fichier1.xml" For Input As #1
  Open nf & "\fichier2.xml" For Output As #2
  Do While Not EOF(1)
    c = Input(1, #1)
 
    If c = "@" Then: c = " "
    If c = "ß" Then: c = "B"
    If c = "ä" Then: c = "a"
    If c = "ï" Then: c = "i"
    If c = "ö" Then: c = "o"
    If c = "ü" Then: c = "u"
    If c = "Ä" Then: c = "A"
    If c = "Ï" Then: c = "I"
    If c = "Ö" Then: c = "O"
    If c = "Ü" Then: c = "U"
    If c = "©" Then: c = " "
    If c = "'" Then: c = " "
    If c = "*" Then: c = " "
    If c = "²" Then: c = " "
    If c = "&" Then: c = " "
    If c = "~" Then: c = " "
    If c = "#" Then: c = " "
    If c = "{" Then: c = " "
    If c = "[" Then: c = " "
    If c = "|" Then: c = " "
    If c = "`" Then: c = " "
    If c = "\" Then: c = " "
    If c = "^" Then: c = " "
    If c = "]" Then: c = " "
    If c = "}" Then: c = " "
    If c = "+" Then: c = " "
    If c = "$" Then: c = " "
    If c = "£" Then: c = " "
    If c = "¤" Then: c = " "
    If c = "µ" Then: c = " "
    If c = "§" Then: c = " "
 
    Debug.Print c
    Print #2, c;
  Loop
  Close #1, #2
End Sub
	Il arrive souvent que je trouve dans les champs des caractères spéciaux tels que : ?, !, /
Le problème est que ces caractères sont dans la structure du xml et ne peuvent pas être supprimés sans compromettre l'intégrité du fichier.
Exemple de fichier xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- XML Descriptif -->
<!--DOCTYPE Expeditions -->
-<Expeditions>
-<Entete-Message>
<Code-GTF/>
<Date-Expedition>20180222</Date-Expedition>
<Creation-Time>20180222 15:22:34</Creation-Time>
</Entete-Message>
-<Expedition>
<Type-Expedition>EXP</Type-Expedition>
<Ref-Expedition>896321318</Ref-Expedition>
<Num-Recepisse/>
<RFF-Expedition>0001690032</RFF-Expedition>
-<Expediteur>
<Code-Expediteur/>
<Nom-Expediteur>NOM DE L'EXPEDITEUR</Nom-Expediteur>
<Ad1-Expediteur>TEST 18</Ad1-Expediteur>
<Ad2-Expediteur/>
<Pays-Expediteur>PL</Pays-Expediteur>
<CP-Expediteur>67-100</CP-Expediteur>
<Ville-Expediteur>EXPEDITEUR !</Ville-Expediteur>
</Expediteur>
-<Destinataire>
<Code-Destinataire/>
<Nom-Destinataire>NOM DU DESTINATAIRE</Nom-Destinataire>
<Ad1-Destinataire>25 AVENUE DE LA REPUBLIQUE</Ad1-Destinataire>
<Ad2-Destinataire/>
<Pays-Destinataire>FR</Pays-Destinataire>
<CP-Destinataire>75000</CP-Destinataire>
<Ville-Destinataire>PARIS</Ville-Destinataire>
</Destinataire>
-<Premiere-PF>
<Code-1PF>Pas de code reseau pour le trafic de sous-traitance position recep XXXXXXXXXX</Code-1PF>
<Date-1PF>20180222 00:00</Date-1PF>
</Premiere-PF>
<Code-Produit>M?ES</Code-Produit>
<Nb-Palette>0</Nb-Palette>
<Nb-Paleur>6</Nb-Paleur>
<Nb-Palsol>0</Nb-Palsol>
<Nb-EqPal>0</Nb-EqPal>
<Metre-Plancher>0</Metre-Plancher>
<Poids>3600,000</Poids>
<Nb-UM>6</Nb-UM>
<Quantite/>
<Volume>0</Volume>
<Code-Contrat-Vente/>
<Code-Service>N</Code-Service>
<Rdv> </Rdv>
<Max-Liv> </Max-Liv>
<Inst-Speciales>TEXTE LIBRE</Inst-Speciales>
<Code-Pd>N</Code-Pd>
<Code-PF-Imp>Pas de code reseau pour //le trafic// de sous-traitance position RecepXXXXXXXXXX</Code-PF-Imp>
<Cpte-Fact/>
<Ex-TVA>E</Ex-TVA>
<Nb-EqPal-Dgs>0</Nb-EqPal-Dgs>
<Metre-Plancher-Dgs>0</Metre-Plancher-Dgs>
<ADRs> </ADRs>
<Doc-Douane>N</Doc-Douane>
<Acquis>N</Acquis>
-<Cb-UMs>
<Cb-UM>123456??312D221006</Cb-UM>
<Cb-UM>123456153312222003</Cb-UM>
<Cb-UM>235692153312223000</Cb-UM>
<Cb-UM>P2222215?312224005</Cb-UM>
<Cb-UM>PL2309153312225002</Cb-UM>
<Cb-UM>589632153312226007</Cb-UM>
</Cb-UMs>
</Expedition>
</Expeditions>
Ma question :
Comment supprimer également ces caractères sans compromettre la structure du xml ?
L'un de vous aurait-il une solution ? Il faudrait que le code fonctionne uniquement entre > et < ou alors convertir le xml en txt, le corriger et refaire un xml.
Bien cordialement et bonne journée à tous
Ivan