SAXParser 抛出 FileNotFoundException 尽管没有给出要解析的文件

SAXParser throws FileNotFoundException despite not being given a file to parse

我知道那里有一些 SAXParser 问题,但我找不到描述我的问题的问题:

我有一个包含 XML 数据的字符串,我将它传递给 ByteArrayInputStream:

public boolean parse(String message) {
        ByteArrayInputStream bis = new ByteArrayInputStream(message.getBytes());

我在上面调用了解析方法

saxparser.parse(bis, handler); //this row throws a FileNotFoundException

尽管没有提及任何文件,但解析会抛出 FileNotFoundException。 奇怪的是,它试图在我的工作区中找到一个不存在的文件名,后来我发现该文件名是用双引号括起来的字符串的一部分(见下文,我们称之为 "theFile.extension" 文件)

编辑:我想也许我的 XML 由于某种原因写错了:

<?xml version="1.0"?>
<!DOCTYPE presence PUBLIC "Some-valid-stuff" "theFile.extension">

这种情况应该去哪里寻找解决方案?

谢谢

SAX 解析器正在尝试使用指定的 DTD 文件验证 xml,这就是它尝试加载该文件的原因。

您可以如下禁用验证。

saxParserFactory.setValidating(false)
saxParserFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false)