gpt4 book ai didi

c# - 反序列化具有不同命名空间的 xml 文件

转载 作者:行者123 更新时间:2023-12-04 17:06:39 24 4
gpt4 key购买 nike

我想导入具有不同命名空间但结构相似的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com