微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决虽然我在反序列化 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 举报,一经查实,本站将立刻删除。