Xml文档上的XmlSerializer崩溃

Xml文档上的XmlSerializer崩溃,xml,string,serialization,Xml,String,Serialization,我从XmlReader中提取了以下节点: string xml = "<FeatureType xmlns=\"http://www.opengis.net/wfs\" > </FeatureType>" string xml=“” 为了反序列化到预定义类,我尝试: using (StringReader elementReader = new StringReader("<?xml version='1.0'?>" + xml )) { // T

我从XmlReader中提取了以下节点:

string xml = "<FeatureType xmlns=\"http://www.opengis.net/wfs\" > </FeatureType>"
string xml=“”
为了反序列化到预定义类,我尝试:

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));
}
使用(StringReader elementReader=new StringReader(“+xml))
{
//TODO:可以使用数据协定序列化程序吗?
XmlSerializer反序列化器=序列化器[typeof(FeatureType)];
添加((FeatureType)反序列化器。反序列化(elementReader));
}
反序列化时,XmlSerializer抛出异常,并显示以下消息:

"<FeatureType xmlns='http://www.opengis.net/wfs'> was not expected."
“不是预期的。”
如果删除名称空间声明,则可以反序列化。在不必进一步处理读取器输出的情况下,如何修复此问题?另外,为什么读取器在提取每个节点时要注入名称空间声明


TIA.

为此类构造
XmlSerializer
时,请确保使用默认的XML命名空间:

XmlSerializer deserializer = new XmlSerializer(typeof(FeatureType), 
                                               "http://www.opengis.net/wfs");
这是
XmlSerializer
的构造函数,它接受可选的第二个参数
defaultNamespace


使用这种方法,您可以轻松地反序列化XML字符串,而不会出现任何问题。

您可以在问题中发布XML变量的内容吗?