Bonjour,

Je développe actuellement un service web en VB.Net, (avec le framework 2.0) qui doit décomposer un flux XML pour créer des requêtes SQL et les exécuter.
J'ai donc procédé comme ci-dessous pour lire mon fichier XML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
<WebMethod()> Public Function ImportFluxXML(ByVal Flux_XML As String) As String
Dim DocXML As New XmlDocument
'Décomposion du Flux XML pour sauvegarder le contrôle'
Try
'chargement du flux XML dans l objet XMLDocument'
DocXML.LoadXml(Flux_XML)
Catch ex As Exception
    Return ex.Message
End Try
''''''''''''''''''''''''''''''''''''''''
'Lecture du flux
Mon problème est que mon flux contient des 'é' et qu'il sont converti en '?' lorsque la chaine est passer au service web. Lorsque j’appelle LoadXml() j’obtiens alors l'erreur :
Le caractère '?', valeur hexadécimale 0x3F, ne peut pas être inclus dans un nom. Ligne 2, position 27946.
J'ai donc ajouté le code suivant pour convertir ma chaine ANSI en UTF-16:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
<WebMethod()> Public Function ImportFluxXML(ByVal Flux_XML As String) As String
Dim DocXML As New XmlDocument
Dim Flux_XML_ANSI() As Byte
Dim Flux_XML_UTF16 As String
 
'convertion en UTF16'
Flux_XML_UTF16 = ""
Flux_XML_ANSI = Encoding.GetEncoding(1252).GetBytes(Flux_XML)
Flux_XML_ANSI = Encoding.Convert(Encoding.GetEncoding(1252), Encoding.BigEndianUnicode, Flux_XML_ANSI)
Flux_XML_UTF16 = Encoding.BigEndianUnicode.GetString(Flux_XML_ANSI)
 
'Décomposion du Flux XML pour sauvegarder le contrôle'
Try
    'chargement du flux XML dans l objet XMLDocument'
    DocXML.LoadXml(Flux_XML_UTF16)
Catch ex As Exception
    Return ex.Message
End Try
''''''''''''''''''''''''''''''''''''''''
'Lecture du flux
Mais les caractères '?' non pas été convertis en 'é'.

Quelqu'un aurait il une solution ?

Merci d'avance