【问题标题】:Parsing HTML elements in Apache Tika在 Apache Tika 中解析 HTML 元素
【发布时间】:2013-10-14 19:44:15
【问题描述】:
如何使用 Apache TIKA 检索 ID 为 48227783 的 <DIV> 值?
<div class="postcolor post_text" data-postid="48227783">Ownage!<br /></div>
我尝试检索值 'Ownage!' ,我尝试使用 mapSafeElement , DefaultHtmlMapper 对象似乎无法在任何地方找到它。
谢谢。
【问题讨论】:
标签:
java
html-parsing
apache-tika
【解决方案1】:
我将覆盖 mapSafeElement、mapSafeAttribute 和 isDiscardElement 方法以在解析期间访问此元素,因为 Tika 可能会拒绝非标准/非“安全”属性“data-postid” - 如下所示。
然后,您将通过 ParseContext 对象使用此类,如下所示:
InputStream input = <your Uri/file/string input stream>;
ParseContext parseContext = new ParseContext();
parseContext.set(HtmlMapper.class, AllTagMapper.class.newInstance());
HtmlParser parser = new HtmlParser();
parser.parse(input, new ContentHandler(), new Metadata(), parseContext);
// Override HtmlMapper to process all tags and tributes.
class AllTagMapper implements HtmlMapper {
@Override
public String mapSafeElement(String name) {
return name.toLowerCase();
}
@Override
public boolean isDiscardElement(String name) {
return false;
}
@Override
public String mapSafeAttribute(String elementName, String attributeName) {
return attributeName.toLowerCase();
}
}