【问题标题】:What does the org.apache.xmlbeans.XmlException with a message of "Unexpected element: CDATA" mean?带有“意外元素:CDATA”消息的 org.apache.xmlbeans.XmlException 是什么意思?
【发布时间】:2010-11-27 06:50:23
【问题描述】:

我正在尝试解析和加载一个 XML 文档,但是当我在扩展 XmlObject 的类上调用 parse 方法时出现此异常。不幸的是,它没有让我知道什么元素是意外的,这是我的问题。

我无法分享此代码,但如有必要,我可以尝试提供更多信息。

【问题讨论】:

  • 有一大堆谷歌点击此..你有没有发现其中的任何启发?
  • 虽然您不能“共享代码”,但您是否可以共享 XML 文档本身或其中的一部分。或者,其他建议,您可以尝试使用另一个在普通 XML 编辑器中读取正常的 XML 文档比如 XML 记事本?
  • 我不能分享任何东西......专有的东西和所有东西。并且 XML 文档在记事本中打开良好 - 它格式正确并根据架构进行验证。
  • 是在特定文档上失败,还是在所有文档上失败?你是如何调用 parse 方法的?

标签: java xml xmlbeans xmlexception


【解决方案1】:

无法共享代码或输入数据,您可以考虑以下方法。恐怕这是一种非常常见的二分法诊断方法,实际上您可能已经开始使用它了...

尝试通过删除部分输入 XML 来减小输入 XML 的大小,确保底层 XML 文档保持格式良好且可能有效(如果您的解析器设置需要有效性)。如果您保持有效性,这可能需要更改架构(DTD 或其他)的 [a copy of],因为强制元素可能会在 cut-and-try 方法中被删除......顺便说一句,错误消息似乎暗示更多一个验证问题,一个基本的格式良好的断言问题。

除非人们对触发解析器投诉的区域有特别的预感,否则我们通常会删除(或重新添加,当事情开始工作时)大约一半的之前删除或重新添加的内容。

您也可以从尝试一个大部分为空的文件开始,以断言解析器确实可以工作......再次有“分而治之”的想法:问题是在 XML 输入中还是在解析器中? (记住可能有两个问题,一个在输入中,一个在解析器中,而且这些问题甚至可能是不相关的......)

很抱歉,您可能会流利地使用基本的诊断技术......

【讨论】:

  • 是的。并在它开始工作时开始添加。简单但高效且通用!
【解决方案2】:

您应该检查传递给方法 parse(); 的参数; 如果您直接传递一个字符串来解析或相应的文件或输入流(文件/输入流/字符串)等。

【讨论】:

    【解决方案3】:

    异常是由 XML 文件的长度引起的。如果您在文件中添加或删除一个字符,解析器将成功。

    问题出现在 XMLBeans 所依赖的第 3 方 PiccoloLexer 库中。它已在修订版 959082 中修复,但尚未应用于 xbean 2.5 jar。

    XMLBeans - Problem with XML files if length is exactly 8193bytes

    Issue reported on XMLBean Jira

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      • 2012-12-17
      相关资源
      最近更新 更多