【问题标题】:Recommended method for getting character positions of all HTML tags in a document获取文档中所有 HTML 标记的字符位置的推荐方法
【发布时间】:2012-02-18 19:35:35
【问题描述】:

所以正则表达式may have side-effects。那么,获取文档中所有 HTML 标记的开始和结束字符位置的首选方法是什么? Jsoup 和 NekoHTML 等解析库似乎不提供此信息,甚至 XMLLocator 似乎也不适用,因为它仅提供当前文档事件的 end

我对标签的类型或名称、它的任何属性或从文本中删除任何内容不感兴趣。我只想知道它们从哪里开始,从哪里结束。

对于这个问题,可以假设源 HTML 是有效的。

【问题讨论】:

  • 首先确保它是一个有效的 HTML
  • 嗯,我假设这是暗示的,但我已经在问题中澄清了这一点。
  • 您的问题听起来像是达到目的的一种手段。您要解决什么业务问题?
  • “达到目的的手段”不是所有编程问题的必需属性吗? :) 无论如何,该应用程序涉及将 HTML 注释为 Apache UIMA 注释器的一部分。

标签: java html parsing uima


【解决方案1】:

我自己也很好奇,所以找到了这个解析器: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());        
}

【讨论】:

  • 太棒了!我看过杰里科,但设法错过了那个功能。我只对注释标签感兴趣,而不是内容,所以我也在使用 Element.getStartTag() 和 Element.getEndTag() 函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2020-05-26
  • 1970-01-01
相关资源
最近更新 更多