2010-01-13 7 views
0

I extrait le noeud suivant de XmlReader:XmlSerializer s'écraser sur le document Xml

string xml = "<FeatureType xmlns=\"http://www.opengis.net/wfs\" > </FeatureType>" 

Pour désérialiser à une classe prédéfinie, j'ai essayé:

using (StringReader elementReader = new StringReader("<?xml version='1.0'?>" + xml)) 
{ 
    // TODO: Can data contract serializer be used? 
    XmlSerializer deserializer = serializers[typeof(FeatureType)]; 
    featureTypes.Add((FeatureType)deserializer.Deserialize(elementReader)); 
} 

Sur désérialisation, XmlSerializer lance une exception le message suivant:

"<FeatureType xmlns='http://www.opengis.net/wfs'> was not expected." 

Si je supprime la déclaration d'espace de noms, je peux sérialiser. Sans avoir à manipuler davantage avec la sortie du lecteur, comment puis-je résoudre ce problème? En outre, pourquoi le lecteur injecte-t-il la déclaration d'espace de noms, lorsqu'il extrait chaque noeud?

TIA.

+0

Pouvez-vous publier le contenu de la variable XML dans votre question? –

Répondre

1

Assurez-vous que vous utilisez l'espace de noms XML par défaut lorsque vous construisez votre XmlSerializer pour cette classe:

XmlSerializer deserializer = new XmlSerializer(typeof(FeatureType), 
               "http://www.opengis.net/wfs"); 

C'est le constructeur de XmlSerializer qui prend un second paramètre, defaultNamespace. En utilisant cette approche, vous pouvez facilement désérialiser votre chaîne XML sans aucun problème.

+0

C'était tout, merci. –

+0

+1 c'était tout, merci ... –