使用不同的名称空间反序列化xml文件

时间:2018-06-22 14:30:09

标签: c# xml namespaces

我想导入具有不同名称空间但结构相似的xml文件。我还没有找到适合我需要的解决方案,所以现在问。

如何建立忽略命名空间的方法。或者在反序列化之前如何删除标签?

我收到的错误消息:

using (StreamReader stream = new StreamReader(path))
{
    xmlObject = (XmlClass)new 
    XmlSerializer(typeof(XmlClass)).Deserialize(stream);
}

我反序列化xml文件的方式:

gpg: connecting dirmngr at '/tmp/apt-key-gpghome.4GKHZljOFL/S.dirmngr' failed: IPC connect call failed
gpg: keyserver receive failed: No dirmngr

1 个答案:

答案 0 :(得分:0)

您可以通过子类化XmlTextReader来创建一个非常简单的名称空间剥离器。这个课程似乎足以应付XmlDeserializer

public class XmlReaderNoNamespaces : XmlTextReader
{
    public XmlReaderNoNamespaces(Stream stream) : base(stream)
    {
    }

    public override string Name => LocalName;

    public override string NamespaceURI => string.Empty;

    public override string Prefix => string.Empty;
}

使用方式:

using (StreamReader stream = new StreamReader(path))
using (var reader = new XmlReaderNoNamespaces(stream))
{
    xmlObject  =(FooContainer)ser.Deserialize(reader);
}