代码之家  ›  专栏  ›  技术社区  ›  AndrewC

XmlSerializer引发InvalidOperationException

  •  2
  • AndrewC  · 技术社区  · 16 年前

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

    每个事件处理程序基本上都执行相同的操作,它们打印出引起问题的节点名或属性名。

    更新

    异常为:未处理的异常:System.InvalidOperationException:XML文档中有错误(5110)。

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

    2 回复  |  直到 16 年前
        1
  •  1
  •   Rob    16 年前

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

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

    字段1 字段2 如果有一个名为 字段3 在XML中。这个 InvalidOperationException 是因为XML不是XML而引发的 UnknownElement 事件是由于XML中存在意外的元素而引发的,尽管XML在其他方面是有效的。

        2
  •  0
  •   John Saunders    16 年前

    您正在处理的两个事件与XML文档结构中的错误无关。


    从您发布的部分异常的外观来看,您的文档似乎是无效的XML(不匹配的标记)。除了捕获异常之外,没有办法检测到这种情况。