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

时间:2015-10-27 17:50:52

标签: java xml xml-parsing saxparser

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

我有一个包含XML数据的String,我将它传递给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">

在这种情况下,我应该在哪里寻找解决方案?

由于

1 个答案:

答案 0 :(得分:3)

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

您可以按如下方式禁用验证。

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