在JavaSAX中解析XML,而不填充默认属性

在JavaSAX中解析XML,而不填充默认属性,java,xml,sax,Java,Xml,Sax,我正在尝试使用javax.XML.parsers.SAXParser根据DTD解析给定的XML。但是,我只是不希望基于DTD填充默认属性。因此,我尝试了SAXParserFactory的setFeature,如中所述: 但是,它似乎不起作用!我仍然得到默认属性填充的输出!你能告诉我如何解决这个问题吗?答案就在你眼前。从您共享的链接: True:加载DTD并使用它添加默认属性并设置 解析时的属性类型 错误:构建语法,但不要 使用默认属性和属性类型信息 包含 因此,您应该将该功能设置为false来运

我正在尝试使用javax.XML.parsers.SAXParser根据DTD解析给定的XML。但是,我只是不希望基于DTD填充默认属性。因此,我尝试了SAXParserFactory的setFeature,如中所述:


但是,它似乎不起作用!我仍然得到默认属性填充的输出!你能告诉我如何解决这个问题吗?

答案就在你眼前。从您共享的链接:

True:加载DTD并使用它添加默认属性并设置 解析时的属性类型

错误:构建语法,但不要 使用默认属性和属性类型信息 包含

因此,您应该将该功能设置为false来运行它:

SAXParserFactory fact = SAXParserFactory.newInstance(); fact.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);

我已经更新了我原来的问题。早些时候,load dtd grammar的值设置为true;这是一个打字错误,我的错误!无论我为这个特性设置了什么值(真/假),程序都无法运行。你确定你正在使用xerces解析器吗?最后,我为此编写了自己的解析器,它运行良好。也许我会把它放在github/sourceforge中。谢谢你的建议。但是,无论我设置了什么值(真/假),程序都不工作。另外,实际上在我的问题中,我想将loadDTD语法设置为“false”,但我错误地将其设置为“true”。很抱歉给你带来了困惑。就像我说的,无论我设置了什么值,这个程序都不能工作。
SAXParserFactory fact = SAXParserFactory.newInstance(); fact.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);