现在如何使用XMLReaderFactory?因为这已被弃用

问题描述 投票:0回答:4

我正在尝试使用 XMLReaderFactory,但这已被弃用。 现在,我如何创建 XMLReader 的实例?

java xmlreader java-10
4个回答
24
投票

XMLReaderFactory
的文档建议
SAXParserFactory

SAXParserFactory parserFactory = SAXParserFactory.newInstance();
SAXParser parser = parserFactory.newSAXParser();
XMLReader reader = parser.getXMLReader();

0
投票

XMLReader xmlReader = org.apache.poi.util.XMLHelper.newXMLReader();
创建一个新的 SAX XMLReader,具有合理的默认值。


0
投票

这里有同样的问题,因为我们刚刚从 Jdk8 跳到了 jdk17,为了兼容性,这里是我自己工厂的代码:

XMLReader saxReader;
try {
    SAXParserFactory parserFactory = SAXParserFactory.newInstance();
    parserFactory.setNamespaceAware(true);
    SAXParser parser = parserFactory.newSAXParser();
    XMLReader saxReader  = parser.getXMLReader();           
    saxReader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
} catch (javax.xml.parsers.ParserConfigurationException parseEx) {
    throw new SAXException(parseEx);
} 

使解析器意识到解决了与 DefaultHandler 使用相关的兼容性问题。 XXE 保护已经存在(参见:owasp XXE),但无论如何我认为值得一提。
try catch 包装是因为现在抛出了一个新的异常(如果可以的话,您可以删除这部分并在其他地方管理异常)


0
投票

我也有同样的问题....

XMLReader reader = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
    

并且我没有找到替换 XMLReaderFactory 的示例:-(

© www.soinside.com 2019 - 2024. All rights reserved.