Java SAXParser抛出FileNotFoundException,尽管没有提供要分析的文件

Java SAXParser抛出FileNotFoundException,尽管没有提供要分析的文件,java,xml,xml-parsing,saxparser,Java,Xml,Xml Parsing,Saxparser,我知道有几个问题,但我找不到一个能描述我问题的: 我有一个包含XML数据的字符串,并将其传递给ByteArrayInputStream: public boolean parse(String message) { ByteArrayInputStream bis = new ByteArrayInputStream(message.getBytes()); 我在上面调用parse方法 saxparser.parse(bis, handler); //this row thro

我知道有几个问题,但我找不到一个能描述我问题的:

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

public boolean parse(String message) {
        ByteArrayInputStream bis = new ByteArrayInputStream(message.getBytes());
我在上面调用parse方法

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)

DOCTYPE x PUBLIC“…”location”尝试在您的(本地)“location”中查找文件。SAX解析器正在尝试使用指定的文件验证xml。我现在不记得了,但是有一种方法可以禁用验证。这很有效。不幸的是,我不知道怎样才能从API中找到答案。你认为我错过了什么,或者只是需要经验?很多人都会同时感谢:)。例外情况是,它正在查找DOCTYPE中提到的文件&如果您知道该文件的用途,即验证,那么您可能已经在解析器api中查找了与验证相关的方法。