Я хочу извлечь полное содержимое xml-файла с помощью 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>
Это решение также не работает правильно. Вывод с ToXMLContentHandler и XMLParser заключается в том, что содержимое создается в формате html с телом, содержащим извлеченные элементы без тегов. Я попытался использовать TXTParser, и, похоже, это работает прямо сейчас, но я думаю, что это всего лишь грязное решение. – AKR
Если вам просто нужен необработанный XML, почему вы даже используете Tika? Точка Tika - дать вам согласованные метаданные и xhtml/plain текст из диапазона форматов – Gagravarr
Я полагаю, что, как и я, плакат не хочет сырого XML (я имею в виду, что это очевидно, что плакат не хочет необработанный XML!), но что-то более интеллектуальное. Простое использование TXTParser не отменяет escape-последовательности или не удаляет специальные символы. Например Баз < " должны быть извлечены как Foo бар barValue Baz
barneypitt