【问题标题】:Parsing XML in JAVA SAX, without populating default attributes在 JAVA SAX 中解析 XML,而不填充默认属性
【发布时间】:2011-11-08 15:18:18
【问题描述】:

我正在尝试使用 javax.xml.parsers.SAXParser 针对 DTD 解析给定的 XML。但是,我只是不希望基于 DTD 填充默认属性。所以我尝试了http://xerces.apache.org/xerces2-j/features.html#nonvalidating.load-dtd-grammar中描述的SAXParserFactory的setFeature:

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

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

【问题讨论】:

  • 我已经更新了我原来的问题。之前 load-dtd-grammar 的值设置为 true;这是一个错字,我的错!无论我为此功能设置什么值(真/假),该程序都不起作用。
  • 您确定您使用的是 xerces 解析器吗?
  • 最后我为此编写了自己的解析器,它运行良好。大概我会把它放在 github/sourceforge 中。

标签: java xml sax


【解决方案1】:

答案就在眼前。通过您分享的链接:

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

False:构建语法但不构建 使用默认属性和属性类型信息吧 包含。

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

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

【讨论】:

  • 感谢您的建议。但是,无论我设置什么值(真/假),该程序都不起作用。此外,实际上在我的问题中,我想将 load-dtd-grammar 设置为“false”,但我错误地将其设置为“true”。对困惑感到抱歉。就像我说的,该程序在我设置的任何值下都不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-16
  • 1970-01-01
  • 2011-09-14
  • 1970-01-01
  • 2017-08-19
  • 1970-01-01
  • 2012-06-29
相关资源
最近更新 更多