Intellij idea 让IntelliJ知道XML文件中指向Java元素的链接

Intellij idea 让IntelliJ知道XML文件中指向Java元素的链接,intellij-idea,Intellij Idea,我有一个链接到Java资源的自定义XML格式。为了简单起见,假设我的XML文件如下所示: <psi.referenceContributor implementation="com.yourplugin.YourReferenceContributor"/> 我的.full.qualified.class.name 最终,我的参考资料会更复杂一些。它不会直接包含完全限定的类名,我需要一些逻辑来解析正确的类,但我希望在这里使示例尽可能简单 现在,我希望可以Strg+单击元素的文本

我有一个链接到Java资源的自定义XML格式。为了简单起见,假设我的XML文件如下所示:

<psi.referenceContributor implementation="com.yourplugin.YourReferenceContributor"/>

我的.full.qualified.class.name
最终,我的参考资料会更复杂一些。它不会直接包含完全限定的类名,我需要一些逻辑来解析正确的类,但我希望在这里使示例尽可能简单

现在,我希望可以Strg+单击元素的文本,并希望IntelliJ将我带到.java文件,就像在SpringXML文件中一样。在中有一个名为“”的链接,听起来正是我所需要的。不幸的是,它链接到一个讨论,其中有人或多或少地实现了类似的东西,有一些小问题。尽管如此,我知道我可能需要编写接口com.intellij.psi.PsiReference的实现。不幸的是,谷歌搜索“PsiReference”和“IntelliJ”或“IDEA”并没有提供任何关于如何使用它的教程,但我发现这门课听起来很有用。再次,谷歌搜索“XmlValueReference”并没有发现任何关于如何使用该类的有用信息。至少有人告诉我,我可以通过使用
JavaPsiFacade.findClass()
找到Java类。如果有任何教程、提示等,告诉我正确的用法,我将不胜感激

上面链接的讨论提到,我需要调用registry.registerReferenceProvider(XmlTag.class,provider),以便在我最终成功实现它后注册我的提供程序,但哪种类型是“registry”,从哪里获得它?

首先,几天前出现了一个,这篇文章解释了IntelliJ插件开发的基础知识(您应该看看这一节)

您可能需要定义自己的
PsiReferenceContributor
,它将在
plugin.xml
中引用,如下所示:

<psi.referenceContributor implementation="com.yourplugin.YourReferenceContributor"/>

在您的参考贡献者中,有一个方法
registerReferenceProviders(PsiReferenceRegistrar)
,您可以在其中调用
registry.registerReferenceProvider(XmlTag.class,provider)

最后,在您的
PsiReferenceProvider
实例中,您必须测试标记名以过滤掉不包含类引用的标记,然后使用
JavaPsiFacade.findClass()
进行查找

根据我的经验,获得IntelliJ插件开发帮助的最佳场所是