2010-01-13 3 views
0

Я извлек следующий узел из XmlReader:XmlSerializer сбой на Xml документе

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

Для того, чтобы десериализация к заранее определенному классу, я попытался:

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)); 
} 

При десериализации, XmlSerializer генерирует исключение с следующее сообщение:

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

Если я удалю декларацию пространства имен, я могу удалить сериализации. Не нужно ли дальше манипулировать выводами читателя, как я могу это исправить? Кроме того, почему читатель вводит объявление пространства имен, когда он извлекает каждый узел?

TIA.

+0

Можете ли вы разместить содержимое переменной xml в своем вопросе? –

ответ

1

Просто убедитесь, что вы используете пространство имен по умолчанию XML при построить свой XmlSerializer для этого класса:

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

Это конструктор для XmlSerializer, который принимает необязательный второй параметр, defaultNamespace.

Используя этот подход, вы можете легко десериализовать свою XML-строку без каких-либо проблем.

+0

Это было, спасибо. –

+0

+1 что это было, спасибо ... –

Смежные вопросы