3
我想用tika提取xml文件的完整内容。这意味着tika不应该将文本从元素中移出并丢弃标签。用Tika从xml中提取完整内容
内容的输出中应该是这样的:
content:
<?xml version="1.0" encoding="UTF-8" ?>
<xml>
<tag1>text</tag1>
<tag2>text</tag2>
</xml>
但结果始终是这样的:
content:
text
text
程序代码:
public static void main(String[] args) {
try {
InputStream input;
input = new FileInputStream(new File("D:/SolrTestFileSystem/Test_Files/test.xml"));
ContentHandler textHandler = new WriteOutContentHandler();
Metadata metadata = new Metadata();
XMLParser parser = new XMLParser();
ParseContext context = new ParseContext();
parser.parse(input, textHandler, metadata, context);
input.close();
System.out.println("content: " + textHandler.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
的xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<xml>
<tag1>text</tag1>
<tag2>text</tag2>
</xml>
此解决方案似乎也不能以正确的方式工作。 ToXMLContentHandler和XMLParser的输出是内容以html格式构建,包含提取的元素的主体不包含标签。我试图使用TXTParser,它似乎现在正在工作,但我认为这只是一个肮脏的解决方案。 – AKR 2014-09-24 13:33:20
如果你只是想要原始XML,为什么你甚至使用Tika? Tika的要点是为您提供一致的元数据和xhtml /纯文本格式 – Gagravarr 2014-09-24 13:53:36
我想像我一样,海报不需要原始XML(我的意思是海报不需要显而易见原始的XML!),但更智能一些。 只使用TXTParser不会逃避转义序列,或删除特殊字符。 例如 <美孚栏=“barValue”> 巴兹< “ 应该被提取作为符 酒吧barValue巴兹<美孚 或相似的。 我无法找到任何方法来做到这一点使用标准的Tika解析器/处理程序,似乎需要编写自定义处理程序,令人伤心。 – barneypitt 2016-08-15 12:31:19