Читая/разбирая тетрадь в текстовом формате с помощью JRecord, конструктор, похоже, думает, что это XML-файл.
Я пытаюсь прочитать, проанализировать тетрадь в формате .txt с помощью JRecord , а затем обработать двоичный файл, используя схему тетради.
Когда я пытаюсь прочитать двоичный файл, используяschemaBuilder.newReader(binaryFile)
, это дает мне исключение, говорящее: -
CopybookFile.txt:1:1:net.sf.JRecord.Common.RecordException : Content is not allowed in prolog.
Вложенное исключение выглядит как SAXParseException с тем же сообщением.
Я заметил, что при использовании IOBUilder с файлом тетради загрузчик выглядит как XMlCopyBookLoader, а не как загрузчик файлов Cobol. Как мне заставить IOBuilder распознать, что я пытаюсь проанализировать файл txt/cbl?
Минимальный образец ниже:
ICobolIOBuilder schemaBuilder = JRecordInterface1.COBOL.newIOBuilder(copyBookFilePathWithDotTxt).setDialect(1).setFont("cp037").setDropCopyBookNameFromFields(true); // using the debugger, I see that schemaBuilder.loader is an XMLCopyBookLoader and schemaBuilder is of type CblIOBuilderMultiSchema
try {
AbstractLineReader reader = schemaBuilder.newReader(binaryFilePath);
} catch(Exception e) { e.printStackTrace(); }
Я также пробовал использовать тот же файл с расширением .cbl. Я также знаю, что он может прочитать файл, потому что, если я помещу туда содержимое xml, кажется, что он по крайней мере переместится до первого недопустимого символа. т.е. строка после XML.
Java-версия - 8
JRecord версия 0.81.5
1 ответ
Из раздела ошибок в исходном коде JRecord было сделано заключение, что cb2xml должен быть добавлен в качестве зависимости отдельно где-то между 0.80.5 и 0.81.5. Добавив его, я смог правильно разобрать тетрадь.