使用Tika从xml中提取完整内容

时间:2014-09-24 12:55:55

标签: xml apache apache-tika

我想用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>

1 个答案:

答案 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());