所以正则表达式可能有副作用。那么,获取文档中所有 HTML 标记的开始和结束字符位置的首选方法是什么?Jsoup 和 NekoHTML 等解析库似乎不提供此信息,甚至XMLLocator似乎也不适用,因为它只提供当前文档事件的结束。
我对标签的类型或名称、它的任何属性或从文本中删除任何内容不感兴趣。我只想知道它们从哪里开始,从哪里结束。
出于这个问题的目的,可以假设源 HTML 是有效的。
我自己很好奇,所以我找到了这个解析器:http: //jericho.htmlparser.net/
public void testJericho() throws IOException{
Source source=new Source(new URL("http://example.com/"));
List<Element> elementList=source.getAllElements();
for (Element element : elementList) {
printElement(element);
}
}
public void printElement(Element element) {
List<Element> children = element.getChildElements();
for(Element child: children)
printElement(child);
System.out.println(element.getName() + " start: " + element.getBegin());
System.out.println(element.getName() + " end: " + element.getEnd());
}