我想导入具有不同名称空间但结构相似的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
答案 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);
}