gpt4 book ai didi

c# - XmlSerializer 抛出 InvalidOperationException

转载 作者:太空宇宙 更新时间:2023-11-03 14:31:14 30 4
gpt4 key购买 nike

我有一个 XmlSerializer 对象,我已经向 UnknownElement 和 UnknownAttribute 事件添加了 2 个事件处理程序,如下所示:

XmlSerializer xs = new XmlSerialiser(typeof(MyClass));
xs.UnknownAttribute += new XmlAttributeEventHandler(xs_UnknownAttribute);
xs.UnknownElement += new XmlElementEventHandler(xs_UnknownAttribute);

这些事件处理程序中的每一个基本上都做同样的事情,它们打印出导致问题的节点名称或属性名称。

但是由于某种原因,抛出了一个 InvalidOperationException 异常,表示带有 .我以为这些错误会被我的事件捕获?

更新

异常(exception)情况是:

异常是:Unhandled Exception: System.InvalidOperationException: There is an error in XML document (5, 110).

有一个 XmlException 类型的 InnerException,它指出第 5 行的“MyTag”开始标记与“AnotherTag”的结束标记不匹配。第 5 行,位置 110。

最佳答案

没有看到 MyClass 的定义以及您尝试读入的 XML,很难给出明确的答案。也就是说,异常的文本非常明显,XML 标记格式错误,而不是包含未知元素或属性,例如:

<AnotherTag>
<MyTag>
</AnotherTag> <--- This should be </MyTag>
</MyTag> <--- This should be </AnotherTag>

UnknownAttribute/UnknownElement 处理程序不会捕获此信息,因为 XML 的结构根本上是错误的。在将 XML 文档成功解析为节点树、子节点、属性等之前,无法调用这些事件。

只是为了进一步解释有关 UnknownAttribute/UnknownElement 的部分;如果您的类/XML 只允许包含名为 Field1Field2 的元素,那么如果您有一个名为 Field3 在您的 XML 中。 InvalidOperationException引发是因为 XML 不是 XML,UnknownElement引发事件是因为 XML 中有一个意外的元素,尽管 XML 在其他方面是有效的。

关于c# - XmlSerializer 抛出 InvalidOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2522511/

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