java - 如何使用 Apache Tika 编写自定义 ContentHandler?

标签 java html-parsing apache-tika

我想提取某些标签内的文本,例如 <dt> , <dd>使用 Apache Tika 从 HTML 文件中获取 等。

所以我正在写自定义ContentHandler它应该从这些标签中提取信息。

我的定制ContentHandler代码如下所示。它尚未完成,但已经无法按预期工作:

public class TableContentHandler implements ContentHandler {

    // key = abbreviation
    // value = information / description for abbreviation
    private Map<String, String> abbreviations = new HashMap<String, String>();

    // current abbreviation
    private String abbreviation = null;

    // <dd> element contains abbreviation. So this boolean variable will be set when
    // <dd> element is found
    private boolean ddElementStarted = false;

    // this method is not giving contents within <dd> and </dd> tags
    public void characters(char[] chars, int arg1, int arg2) throws SAXException {
            if(ddElementStarted) {
                    System.out.println("chars found...");
            }
    }

    // set boolean ddElementStarted to true to indicate that content handler found 
    // <dd> element
    public void startElement(String arg0, String element, String arg2, Attributes arg3) throws SAXException {
            if(element.equalsIgnoreCase("dd")) {
                    ddElementStarted = true;
            }
    }
}

这里我的假设是,一旦内容处理程序进入 startElement()方法和元素名称是 dd那么我将设置 ddElementStarted = true然后获取 <dd> 里面的内容和</dd>元素,我会 checkin characters()方法。

characters()方法我正在检查是否 ddElementStarted = truechars数组的内容将在 <dd> 范围内和</dd>元素,但它不起作用:(

我想知道是否

  1. 我的方向正确吗?
  2. 这是使用 Tika 解析 HTML 的正确方法吗?或者还有其他办法吗?
  3. 我应该选择其他 HTML 解析 API,例如 JSoup?我只需要来自几个标签的信息,例如我对 HTML 页面的其余部分不感兴趣。
  4. 有没有办法指定XPath Apache Tika 中的表达式?我在 Tika in Action 中找不到此信息书。

最佳答案

简单的解决方案是 Jsoup 。我们可以轻松获取任何标签内的值。因此,无需编写新的 ContentHandler,只需使用 JSoup 进行解析即可。

关于java - 如何使用 Apache Tika 编写自定义 ContentHandler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19297218/

相关文章:

c# - 使用Html Agility Pack解析Html

java - 将 PDF 文档索引到 Solr - 错误 500 java.lang.NoClassDefFoundError : org/eclipse/jetty/server/MultiParts

java - MySql 使用 Java 中的查询查找单词之间的匹配项

python - HTML 解析,lxml、python、.tail 被 <br> 标签分解

java - 如何将 HTML 字符串转换为 XML DOM

java - 达到 Apache Tika maxStringLength

python - 使用 unpack 方法来自 tika python 模块的警告消息

java - 在 Activity JRE 中找不到 "tools.jar'

java - 使用变量指定依赖版本时构建失败

java - 字体突然改变 - Eclipse