【发布时间】:2009-07-21 11:09:12
【问题描述】:
我正在使用 OSGi(Equinox 平台)开发一个应用程序,其中一个包需要解析 XML 文件。到目前为止,我使用 SAX (javax.xml.parsers.SAXParserFactory) 实现了这个,我想从平台检索 SAXParserFactory。
我看到 OSGi 标准提供了一个 XMLParserActivator 以允许 JAXP 实现注册自己 (http://www.osgi.org/javadoc/r4v41/org/osgi/util/xml/XMLParserActivator.html),所以我猜应该有一些捆绑提供 SAXParserFactory 作为服务。
但是,我无法确定要添加哪个包作为依赖项才能找到提供 SAXParserFactory 的服务。我尝试使用
检索服务引用context.getServiceReferences(SAXParserFactory.class.getName(), "(&(parser.namespaceAware=true)(parser.validating=true))")
鉴于 XML 解析是一件相当常见的事情,我想有可用的实现,或其他方式从平台获取 XML 解析器服务。
非常欢迎任何帮助!
【问题讨论】:
-
嗨,我对 OSGi 没有信心,但为什么不使用与 JRE 捆绑的 XML 堆栈呢?
-
嗨,是的,但是 OSGi 类加载器机制不同 - 因此调用 SAXParserFactory.newInstance() 可能会产生问题,因为 JAXP 加载器机制希望在当前线程的类加载器中找到解析器,并且不一定是这样。