gpt4 book ai didi

java - 什么是 org.xml.sax.SAXException : Scanner State 24 not Recognized?

转载 作者:行者123 更新时间:2023-12-01 14:34:13 39 4
gpt4 key购买 nike

我收到以下异常,但找不到任何特定于此异常的文档:

org.xml.sax.SAXException: Scanner State 24 not Recognized
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:271)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)

任何帮助或指向正确资源的指针都会非常有帮助。

最佳答案

此异常是由 Sun 版本的 Xerces 解析器在 DOM 解析期间产生的。不幸的是,引发异常的特定代码块是隐藏的(以下是从 JDK 8.0 DOMParser source code 转述的):

public void parse(InputSource inputSource) throws SAXException, IOException
{
try
{
XMLInputSource xmlInputSource = new XMLInputSource(inputSource.getPublicId(), inputSource.getSystemId(), null);
xmlInputSource.setByteStream(inputSource.getByteStream());
xmlInputSource.setCharacterStream(inputSource.getCharacterStream());
xmlInputSource.setEncoding(inputSource.getEncoding());
parse(xmlInputSource); <-- Original XNIException is thrown in here
} catch (XMLParseException e) {
...
} catch (XNIException e) { // <-- wrap XNI exceptions as SAX exceptions
Exception ex = e.getException();
if (ex == null) { throw new SAXException(e.getMessage()); }
if (ex instanceof SAXException) { throw (SAXException) ex; }
if (ex instanceof IOException) { throw (IOException) ex; }
throw new SAXException(ex); // <-- Note: The original stack trace is lost here.
}
}

由于原始堆栈跟踪是模糊的,因此实际上只有两种方法可以确定此类 parse Exception 的实际原因:
  • 将调试器附加到 DOMParser.parse()方法并单步执行代码以查看最初抛出异常的位置。
  • 从您的 XML 文档中删除元素,直到不再发生解析错误,然后以小增量重新添加它们以确定哪个元素/属性/处理指令/等触发了解析器错误。

  • 如果您对查找错误源不感兴趣,而只是试图消除错误,则可以尝试使用不同的 XML 解析器(例如,最新版本的 Apache Xerces 而不是默认的 Sun Xerces 解析器)。

    正如之前的评论者所建议的那样,提供您的 XML 文档的副本以及 Java 的特定版本(例如,JDK 8.0u40b25)可以得到更准确的答案。

    关于java - 什么是 org.xml.sax.SAXException : Scanner State 24 not Recognized?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47169234/

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