【问题标题】:Validating against a schema that lives inside a plugin针对插件内部的模式进行验证
【发布时间】:2010-10-18 11:16:47
【问题描述】:
背景:
我对 Eclipse 有一个小问题。我正在开发一个工作台插件,它有一些类可以根据模式验证传入的 XML 数据。架构位于插件项目中的“./schemas”文件夹中。
问题:
- 当我运行应用程序时,如何在不使用硬编码路径的情况下读取架构?
- 部署应用程序时,架构需要存在于插件 .jar 中。在这种情况下,(1)中的解决方案会有所不同吗?
【问题讨论】:
标签:
eclipse
validation
plugins
schema
【解决方案1】:
您可以使用 org.eclipse.core.runtime 中的 FileLocator 类来获取包中资源的 URL。
例如,类似
URL schema = FileLocator.find(myBundle, new Path("/schemas/data.xsd"), null);
您可以从 BundleContext 中获取您的 Bundle 对象,并将其传递给您的 Activator(如果您有的话)。或者你可以使用 Platform.getBundle。
你不应该假设 url 是磁盘上的一个文件,当插件是一个 jar 时,情况正是如此。您可以使用 URL.openStream 获取内容,或使用 FileLocator.toFileURL() 获取磁盘上的文件。