类com.intellij.psi.XmlRecursiveElementVisitor源码实例Demo

下面列出了怎么用com.intellij.psi.XmlRecursiveElementVisitor的API类实例代码及写法,或者点击链接到github查看源代码。

@Override
    public void actionPerformed(AnActionEvent e) {
        VirtualFile vFile = e.getData(PlatformDataKeys.VIRTUAL_FILE);
        if (vFile == null) {
            return;
        }
        String fileName = vFile.getName();
        if (!fileName.endsWith(".xml")) {
            return;
        }
        PsiFile pFile = e.getData(PlatformDataKeys.PSI_FILE);
        if (pFile == null) {
            return;
        }
//        for (PsiElement psiElement : pFile.getChildren()) {
//            System.out.println(psiElement.getText() + " is: " + (psiElement instanceof XmlTag));
//            if (psiElement instanceof XmlTag) {
//                System.out.println(FindUsagesCompat.findUsage((XmlTag) psiElement));
//            }
//        }
        pFile.accept(new XmlRecursiveElementVisitor() {
            @Override
            public void visitElement(PsiElement element) {
                super.visitElement(element);
                if (element instanceof XmlTag) {
                    System.out.println(element.getText());
                    if (ResourceUsageCountUtils.isTargetTagToCount(element)) {
                        System.out.println(FindUsagesCompat.findUsage((XmlTag) element));
                    }
                }
            }
        });
    }
 
 类所在包
 同包方法