html - 获取 HTML 元素中使用的类和 ID 的列表

标签 html css netbeans

<分区>


我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。

关闭 7 年前

是否可以获得 HTML 元素中使用的所有类/id 的列表?

我正在处理的元素有 18 个 HTML 页面(公平地说是 JSP),我想知道每个页面上使用了哪些类/id。

例如:<div class="div-class" id="div-id">有课"div-class"和 ID "div-id" .我不想手动搜索每个页面并记下我找到的所有类/ID。

有没有可以为我做这件事的工具?

我正在使用 NetBeans 8.0.2 作为 IDE,所以如果可以使用 NetBeans 来做到这一点,那就太好了!

最佳答案

据我所知,Netbeans 不支持此功能。我提供了一个 java 类文件,您可以运行它来获取此信息。

  1. 在 C 目录中创建一个名为 html 的文件夹。将所有 html/jsp 文件放在 html 目录中。 enter image description here

  2. 运行这个java类文件

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.nio.charset.Charset;
    import java.nio.file.DirectoryStream;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class HtmlIdsAndClasses {
    
        public static void main(String[] args) {
    
            String path = "C:\\html";
    
            scanFiles(path);
        }
    
        private static void scanFiles(String pathLocation) {
    
            try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(Paths.get(pathLocation))) {
                for (Path path : directoryStream) {
    
                    HtmlPageInfo pageInfo = new HtmlPageInfo();
                    List<String> classList = new ArrayList<String>();
                    List<String> idList = new ArrayList<String>();
                    pageInfo.setPageName(path.getFileName().toString());
                    pageInfo.setClassList(classList);
                    pageInfo.setIdList(idList);
                    getAllIds(path, pageInfo);
                    getAllClasses(path, pageInfo);
                    System.out.println(pageInfo);
                }
            } catch (IOException ex) {}
        }
    
        private static void getAllClasses(Path file, HtmlPageInfo pageInfo) {
    
            Pattern classPattern = Pattern.compile("class=\"([-A-Za-z_ ]*)\"");
            Charset charset = Charset.forName("UTF8");
            BufferedReader reader = null;
            try {
    
                reader = Files.newBufferedReader(file, charset);
                String line = null;
                while ((line = reader.readLine()) != null) {
    
                    Matcher classMatcher = classPattern.matcher(line);
                    while(classMatcher.find()) {
                        String classGroup = classMatcher.group(1);
                        for(String cls : classGroup.split(" ")) {
                            pageInfo.getClassList().add(cls);
                        }
                    }
                }
            } 
            catch (IOException x) {
                System.err.format("IOException: %s%n", x);
            }
            finally {
    
                if(reader != null) {
                    try {
                        reader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
        private static void getAllIds(Path file, HtmlPageInfo pageInfo) {
    
            Pattern idPattern = Pattern.compile("id=\"([-A-Za-z_]*)\"");
            Charset charset = Charset.forName("UTF8");
            BufferedReader reader = null;
            try {
    
                reader = Files.newBufferedReader(file, charset);
                String line = null;
                while ((line = reader.readLine()) != null) {
    
                    Matcher idMatcher = idPattern.matcher(line);
                    while(idMatcher.find()) {
                        String id = idMatcher.group(1);
                        pageInfo.getIdList().add(id);
                    }
                }
            } 
            catch (IOException x) {
                System.err.format("IOException: %s%n", x);
            }
            finally {
    
                if(reader != null) {
                    try {
                        reader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    
    class HtmlPageInfo {
    
        private String pageName;
        private List<String> idList;
        private List<String> classList;
        public String getPageName() {
            return pageName;
        }
        public void setPageName(String pageName) {
            this.pageName = pageName;
        }
        public List<String> getIdList() {
            return idList;
        }
        public void setIdList(List<String> idList) {
            this.idList = idList;
        }
        public List<String> getClassList() {
            return classList;
        }
        public void setClassList(List<String> classList) {
            this.classList = classList;
        }
    
        @Override
        public String toString() {
    
            StringBuilder sb = new StringBuilder();
            sb.append("[Page - ");
            sb.append(pageName);
            sb.append("]");
            sb.append("\n\t[IDs - ");
            sb.append("(" + idList.size() + ")]\n\t\t");
            for(String id : idList) {
                sb.append(id + ",");
            }
            sb.append("\n\t[Classes ");
            sb.append("(" + classList.size() + ")]\n\t\t");
            for(String cls : classList) {
                sb.append(cls + ",");
            }
            sb.append("]\n\n");
    
            return sb.toString();
        }
    }
    
  3. 您将在控制台中获得如下图所示的输出。 enter image description here

关于html - 获取 HTML 元素中使用的类和 ID 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33943394/

上一篇:html - CSS 伪类 :focus trouble with multiple select on Google Chrome

下一篇:javascript - 如何在滚动条上应用 css?

相关文章:

java - 查找Netbeans中设置的主项目的路径

javascript - 面向对象的Javascript自定义addEvent方法

css - Div 内的 Div 对齐?

html - 带有框阴影的 CSS 列问题

html - 如何使用 css 使表格 td 占据整个宽度?

java - 带计时器的 ServletContextListener 未在控制台中显示输出

java - 如何将NetBeans项目从具有Maven的Java转换为纯Java?

javascript - 使用 jQuery 为属性设置新值

css - 如何正确对齐页脚文本

css - 更改 JQuery 中 .toggle() 动画的 'origin'