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)
我知道那里有一些 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)