gpt4 book ai didi

java - 如何配置 Java 的 SaxParserFactory 以禁用实体检查?

转载 作者:太空狗 更新时间:2023-10-29 12:58:53 25 4
gpt4 key购买 nike

我正在编写一个屏幕抓取应用程序,它可以读取各种页面并提取数据。我正在使用 SAXParserFactory 获取一个 SAXParser,它又为我提供一个 XMLReader。我已经像这样配置了工厂:

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);

但是,每当我解析包含   实体的文档时,我都会得到一个

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 - 如何配置 Java 的 SaxParserFactory 以禁用实体检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1995614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com