Сбой XmlSerializer в документе Xml - PullRequest
0 голосов
/ 13 января 2010

Я извлек следующий узел из XmlReader:

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."

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

ТИА.

1 Ответ

1 голос
/ 13 января 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...