我想用tika提取xml文件的完整内容。这意味着tika不应该从元素中取出文本并扔掉标签。
内容的输出应该是这样的:
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>
答案 0 :(得分:0)
您的问题是您使用的是纯文本内容处理程序来捕获内容。如果你想要XML标签,你需要使用一个保留它们的内容处理程序!
(您的内容处理程序被称为textHandler
的事实暗示您从中获取它的示例需要纯文本!)
从Apache Tika example for text and xhtml/xml extraction开始,您的代码应该是:
import org.apache.tika.sax.ToXMLContentHandler;
InputStream input = TikaInputStream.get(new File("D:/SolrTestFileSystem/Test_Files/test.xml"));
ContentHandler handler = new ToXMLContentHandler();
Metadata metadata = new Metadata();
XMLParser parser = new XMLParser();
ParseContext context = new ParseContext();
parser.parse(input, handler, metadata, context);
input.close();
System.out.println("content: " + handler.toString());