2015-10-16 1 views
0

Я строю свой собственный парсер MT940, и я сталкиваюсь с чем-то, что кажется неуточненной проблемой.как следует интерпретировать спецификации MT940

Спецификация тега: 61: указывает, что он заканчивается переменным количеством символов (34x). Из файла примера я вижу, что они могут продолжаться на следующей строке.

Например:

:61:1510151015C54,01NTRFNONREF//15288910043499 
/TRCD/00100/ 

Как определить, если следующая строка представляет собой новый тег, или если он является продолжением содержания предыдущей метки. Кажется, что поиск шаблона: xx: в начале строки наивнее, поскольку это может вызвать ошибку в исключительной ситуации, когда контент действительно содержит этот конкретный шаблон.

ответ

0

Каждая строка, начинающаяся с тега, такого как: 61: представляет собой новую строку информации в формате. Если он не начинается с такого тега, это продолжение.

Небольшое предупреждение, хотя. MT940 является стандартом, но есть тонкие различия на каждом банке. Так может быть, это работает на одно, но не работает для другого. Например, некоторые спецификации имеют заголовок, который определяет начало транзакции, а другие нет.

+0

Вы говорите, что код, который передает сообщение, должен подтвердить, что продолжение не начинается с этой «магической» последовательности символов? Другими словами: код видит, что продолжение содержит «: 61:», и оно будет помещено в начало строки, поэтому оно поместит разрыв строки в другое место в строке? – coen

+0

Действительно. Если строка не начинается с: nn: то это продолжение. Вы можете просто разобрать его сверху вниз и проверить каждую следующую строку. – Jaco

+0

, что сделало бы это действительно ужасным протоколом (определяющим положение новых строк в строке на основе содержимого этой строки), но, глядя на всю информацию, которую я прочитал, возможно, вы правы. – coen