【问题标题】:XmlSerializer crashing on Xml documentXmlSerializer 在 Xml 文档上崩溃
【发布时间】:2010-01-13 03:45:32
【问题描述】:

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

如果我删除命名空间声明,我可以反序列化。无需进一步操作阅读器的输出,我该如何解决这个问题?另外,为什么读取器在提取每个节点时要注入命名空间声明?

TIA。

【问题讨论】:

  • 你可以在你的问题中发布 xml 变量的内容吗?

标签: xml string serialization


【解决方案1】:

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

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

这是XmlSerializer 的构造函数,它采用可选的第二个参数defaultNamespace

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多