我正在创建一个使用 SAXParser 解析 XML 文档的 eclipse rcp 应用程序。我用来验证 XML 文档的“EventsDefinition.xsd”具有以下导入:
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="xml.xsd"/>
我将“EventsDefinition.xsd”和“xml.xsd”保存在导出的 rcp 产品的 eclipse 文件夹中。
为了访问“EventsDefinition.xsd”,我使用了以下有效的代码。
URL fileURL = new URL(Platform.getInstallLocation().getURL() + "EventsDefinition.xsd");
File eventsDefinitionFile = new File(fileURL.getPath());
parser.setProperty("http://java.sun.com/xml/jaxp/properties/schemaSource", eventsDefinitionFile);
这样,解析器就能够访问“EventsDefinition.xsd”,但不能访问它所引用的“xml.xsd”,因为它试图找到相对于执行 rcp 应用程序的目录的 xml.xsd。
有没有类似的方法告诉解析器在 eclipse 文件夹而不是在当前工作目录中找到“xml.xsd”?
我尝试在 EventsDefinition.xsd 中指定 schemaLocation="http://www.w3.org/2001/xml.xsd",但它无法读取架构。所以我必须使用导出产品的 eclipse 文件夹中存在的“xml.xsd”的本地副本。
任何建议都会非常有帮助。