如何配置Java的SaxParserFactory禁用实体检查?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何配置Java的SaxParserFactory禁用实体检查?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1141字,纯文字阅读大概需要2分钟。
内容图文
![如何配置Java的SaxParserFactory禁用实体检查?](/upload/InfoBanner/zyjiaocheng/651/a400118ffcfa4ed3a3d30b03613aff43.jpg)
我正在编写一个屏幕抓取应用程序,该应用程序可以读取各种页面并提取数据.我正在使用SAXParserFactory来获得一个SAXParser,这反过来又使我得到了XMLReader.我已经像这样配置了Factory:
spf = SAXParserFactory.newInstance();
spf.setValidating(false);
spf.setFeature("http://xml.org/sax/features/validation", false);
spf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
spf.setFeature("http://xml.org/sax/features/use-entity-resolver2", false);
但是,每当我解析包含& nbsp实体的文档时,我都会得到一个
SEVERE: null
org.xml.sax.SAXParseException: The
entity "nbsp" was referenced, butnot declared.
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1231)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
我知道它找不到该实体,因为我告诉工厂不要读取DTD,但是如何禁用所有实体检查呢?
编辑:这是针对Android应用程序的,这就是为什么我不愿意使用不在标准环境中的API /库的原因.
解决方法:
SAX似乎不具备此功能,但StAX API可以.有关设置方法,请参见this previous question/answer.
如果您是手工编写XML处理器,那么StAX API的处理要比SAX API容易得多,因此您在这两个方面都能取胜.
内容总结
以上是互联网集市为您收集整理的如何配置Java的SaxParserFactory禁用实体检查?全部内容,希望文章能够帮你解决如何配置Java的SaxParserFactory禁用实体检查?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。