虽然我在反序列化 xml 时忽略了命名空间,但它不会忽略根节点的命名空间

问题描述

我正在为某种类型的 XML 制作一个 XML 解串器。我已经有了 one question regarding it :-) 那时我试图符合命名空间,我在示例文件中有。但事实是 - 我从许多不同的来源获得 XML。虽然它们基本上是相同的 XML,但其中一些遵循不同的命名空间,或者添加自己的冗余命名空间。这就是为什么我从代码删除命名空间(在 XmlRoot 属性中)并使用以下代码忽略命名空间:

private Jpk DeserializeInputFile(string path)
{
    Jpk obj;

    var fileContent = File.ReadAllText(path);
    using (TextReader textReader = new StringReader(fileContent))
    {
        using (XmlTextReader reader = new XmlTextReader(textReader))
        {
            reader.Namespaces = false;
            XmlSerializer serializer = new XmlSerializer(typeof(Jpk));
            obj = (Jpk)serializer.Deserialize(reader);
        }
    }

    return obj;
}

现在我遇到了不同的情况。我收到了一个以以下根目录开头的 XML 文件

<tns:JPK xmlns:etd="http://crd.gov.pl/xml/schematy/dziedziNowe/mf/2018/08/24/eD/DefinicjeTypy/" xmlns:tns="http://jpk.mf.gov.pl/wzor/2019/09/27/09271/">

尝试反序列化时出现以下异常:

system.invalidOperationException: XML 文档中存在错误 (1,57)。 ---> system.invalidOperationException: 不是预期的。

以前在根节点中没有命名空间。没有 tns:JPK,只有 JPK。 如何在根节点中忽略此命名空间?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)