我正在使用此处提供的方法:http://xerces.apache.org/xml-commons/components/resolver/resolver-article.html
这是我使用 StAX 的 XML 解析代码
XMLInputFactory factory = XMLInputFactory.newInstance();
factory.setProperty(XMLInputFactory.IS_VALIDATING, "true");
CatalogResolver cr = new CatalogResolver();
factory.setXMLResolver(cr);
XMLEventReader eventReader =
factory.createXMLEventReader(new InputStreamReader(
httpResp.getEntity().getContent()));
但是,我无法将 CatalogResolver
参数传递给 setXMLResolver()
。
当我尝试将其转换为 XMLResolver
时,我收到转换异常。
我是不是错过了什么?我还可以通过什么其他方式提供 CatalogResolver
?
最佳答案
org.apache.xml.resolver.tools.CatalogResolver
实现 org.xml.sax.EntityResolver
,因此可以用作 SAX XML 解析器的解析器。
但是 XMLInputFactory
需要一个 javax.xml.stream.XMLResolver
这是一个不同的接口(interface)。
您可以简单地包装您的 CatalogResolver:
CatalogResolver catResolver = null;
XMLResolver xmlResolver = (p,s,b,n) -> { try {
return catResolver.resolveEntity(p,s);
}
catch (Exception e) {
throw new XMLStreamException(e);
}
};
关于java - 将 CatalogResolver 与 StAX 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35195042/