IIB - конвертировать BLOB в String с помощью Java Compute Node

Итак, у меня есть простой поток сообщений с узлом чтения файлов, анализирующий .txt (что угодно) в BLOB, который я должен преобразовать в строку в вычислительном узле Java. Никогда не использовал JAVA, как мне это сделать?

Затем я должен присвоить строке новое значение (независимо от того) и переключить элемент тела логического дерева на новое значение.

Должно быть просто, но все же для меня это крутая кривая обучения из ниоткуда. Вся помощь приветствуется. :)


person Zsolax    schedule 08.08.2018    source источник


Ответы (2)


При синтаксическом анализе в BLOB вы получаете массив байтов в assembly.getMessage().getRootElement().getLastChild().getLastChild(), и преобразование его в String должно быть простым:

String(byte[] bytes, Charset charset)

Вы можете получить кодировку из поддерева Preperties.

О доступе к частям дерева сообщений можно прочитать здесь: https://www.ibm.com/support/knowledgecenter/en/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ac30330_.htm

person Attila Repasi    schedule 09.08.2018

На всякий случай, еще один способ сделать это - проанализировать входной файл напрямую с помощью специального синтаксического анализатора (DFDL, ...). Если однажды ваш документ окажется не в том формате, который вы ожидали, он выдаст правильную ошибку и не рухнет в строке java, пытаясь преобразовать в строку что-то, что не является строкой. Это может быть слишком сложно для вашего случая (а также бесполезно), но если вы учитесь, я бы порекомендовал вам поиграть с парсерами, чтобы вам не пришлось изучать это для будущих случаев.

Но чтение как BLOB совершенно нормально, если вы помните, что это означает буквально все, что может быть прочитано, поэтому решение Java совершенно нормально, если вы правильно с ним обращаетесь (try/catch/throw).

person jdel    schedule 11.08.2018