我想导入具有不同命名空间但结构相似的 xml 文件。我还没有找到适合我需求的解决方案,所以我现在问。
我如何建立以忽略命名空间。或者如何在反序列化之前删除标签?
我收到的错误消息:
<Root xmlns='namespace...'> was not expected.
我反序列化xml文件的方式:
using (StreamReader stream = new StreamReader(path))
{
xmlObject = (XmlClass)new
XmlSerializer(typeof(XmlClass)).Deserialize(stream);
}
最佳答案
您可以通过继承 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);
}
关于c# - 反序列化具有不同命名空间的 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50990192/