我有一个链接到 Java 资源的自定义 XML 格式。为简单起见,假设我的 XML 文件如下所示:
<root>
<java-class>my.fully.qualified.class.name</java-class>
</root>
最终我的参考文献会稍微复杂一些。它不会直接包含完全限定的类名,我需要一些逻辑来解析正确的类,但我想在这里尽可能简单地保持示例。
现在我希望可以 Strg+Click 元素的文本并希望 IntelliJ 将我带到 .java 文件,就像在 Spring-XML 文件中一样。在IDEA 插件开发常见问题解答中,有一个名为“如何在 XML 文件中添加对 Java 元素的自定义引用? ”的链接,这听起来很像我所需要的。不幸的是,它链接到一个讨论,其中有人或多或少地完成了这样的事情,有一些小问题。尽管如此,我明白我可能需要编写接口 com.intellij.psi.PsiReference 的实现。不幸的是,谷歌搜索“PsiReference”和“IntelliJ”或“IDEA”并没有提供任何关于如何使用它的教程,但我找到了XmlValueReference类这听起来很有用。再次谷歌搜索“XmlValueReference”并没有发现任何关于如何使用该类的有用信息。至少PSI Cookbook告诉我,我可以使用JavaPsiFacade.findClass()
. 我会感谢任何指导正确用法的教程、提示等。
上面链接的讨论提到,一旦我最终设法实现它,我需要调用registry.registerReferenceProvider(XmlTag.class, provider)
以注册我的提供者,但是“注册表”属于哪种类型,我从哪里得到它?