<分区>
我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。
关闭 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 类文件,您可以运行它来获取此信息。
运行这个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();
}
}
关于html - 获取 HTML 元素中使用的类和 ID 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33943394/