Читая/разбирая тетрадь в текстовом формате с помощью 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. Добавив его, я смог правильно разобрать тетрадь.

Другие вопросы по тегам