使用Tika从XML、HTML等文本文件中提取文本

使用Tika从XML、HTML等文本文件中提取文本,html,xml,apache-tika,extraction,Html,Xml,Apache Tika,Extraction,像这个问题, 我想从基于文本的文件中提取所有文本,包括标记的内容、标记本身以及XML/HTML元素中的其他文本 我尝试过XML(应用程序/XML)和HTML(文本/HTML),发现AutoDetectPasser返回的内容少于全文内容 我还尝试了YAML(text/plain)和JSON(text/plain),它们确实返回全文内容 我知道我不能使用AutoDetectParser处理XML或HTML。我找不到的是需要特殊处理的文件类型列表 要获取全文内容(即使这意味着文件的完整“原始”副本):

像这个问题,

我想从基于文本的文件中提取所有文本,包括标记的内容、标记本身以及XML/HTML元素中的其他文本

我尝试过XML(应用程序/XML)和HTML(文本/HTML),发现AutoDetectPasser返回的内容少于全文内容

我还尝试了YAML(text/plain)和JSON(text/plain),它们确实返回全文内容

我知道我不能使用AutoDetectParser处理XML或HTML。我找不到的是需要特殊处理的文件类型列表

要获取全文内容(即使这意味着文件的完整“原始”副本): 1.应该使用TXTParser解析哪些mimetype? 2.应该使用其他解析器解析哪些mimetype

基本上,我是问AutoDetectPasser返回的Mimetypes比全文内容少多少

谢谢

编辑

我的用例是能够从各种输入文件格式中提取文本和元数据,包括txt、xml、html、doc(x)、ppt(x)、pdf等等

本质上,我希望能够处理Tika能够处理的任何文件类型

我正在使用这样的代码

AutoDetectParser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
ParseContext context = new ParseContext();
context.set(Parser.class, parser);

try (InputStream stream = new FileInputStream(fileToExtract)){
    parser.parse(stream, handler, metadata, context);
} catch ... {
}
我看到的XML文件的结果与上面提到的问题相同

我想弄清楚的是:当AutoDetectPasser和BodyContentHandler的组合返回的文本少于输入文件的全文时,文档记录在哪里

什么时候,或者对于什么mimetype,我需要切换解析器和/或ContentHandler


我看不到这些信息有明确的文档记录,我希望避免出现跟踪和错误的方法。

如果没有代码,很难看出您做错了什么。。。文本提取实际上是基于提取到xhtml,然后扔掉标记,因此我使用的代码与上面StackOverflow问题的答案应该没有区别。我正在尝试获取更多关于哪些Mimetypes应该使用除AutoDetectParser之外的解析器来获取全文内容的信息。示例引用了cover XML(application/XML),其他什么应该遵循XML模式?该代码使用
BodyContentHandler
,顾名思义,它只获取正文部分,只需切换到一个获取完整内容的代码,就可以了@加格拉瓦,我也有这个想法。很难从文档中确定“获取全部内容的人”。即使是我能找到的最接近的“ToTextContentHandler”,也会忽略和标记。如果您不关心缩进等,只需从saxtTransformerFactory中取一个普通的即可。有关设置一个以获得更好输出的示例,请参见