2008-11-19 12 views
0

Le code XML suivant m'a été envoyé par un service Web. J'utilise .NET pour le désérialiser, mais je reçois une exception disant que c'est mal formaté. There is an error in XML document (2, 2) Maintenant, si je comprends bien, il n'aime pas qu'il trouve le premier nœud <error>.Problème de désérialisation XML

<?xml version="1.0" encoding="UTF-8"?> 
<messages xmlns="http://www.w3.org/1999/xml"> 
    <error>error text</error> 
    <message>message text</message> 
</messages> 

mon code ressemble à ceci, les données étant la version String du XML ci-dessus:

Dim resp As cResponseMessage 
Dim sr As New StringReader(data) 
Dim xs As New XmlReaderSettings() 

Dim xd As New XmlSerializer(GetType(cResponseMessage)) 
resp = xd.Deserialize(XmlTextReader.Create(sr, xs)) 

et cResponseMessage est tout simplement une classe avec un XMLRoot attribut et 2 propriétés avec XMLElement attributs. Rien d'extraordinaire ici, mais il ne veut pas travailler.

Toute aide serait géniale.

+0

Vous devriez également afficher la définition de la classe cResponseMessage. C'est probablement là où la déconnexion est. – dpurrington

Répondre

1

Cette classe fonctionne pour moi:

<XmlRoot(Namespace:="http://www.w3.org/1999/xml", ElementName:="messages")> _ 
Public Class cResponseMessage 

    <XmlElement> _ 
    Public Property [error] As String 
     Get 
     Set(ByVal value As String) 
    End Property 

    <XmlElement> _ 
    Public Property message As String 
     Get 
     Set(ByVal value As String) 
    End Property 
End Class 
+0

oh duh. Nécessaire un espace de noms. Merci! –

0

Il y a une erreur dans le document XML (2, 2) me semble que ce serait le m dans <messages>.

Peut-être que votre XmlRoot n'est pas correctement configuré dans cResponseMessage?

Questions connexes