Я пытаюсь разобрать какой-то текст, ищу самое быстрое/простое решение для этого. Я пытался использовать регулярное выражение, но с Java это длится вечно...
Вот структура текста, который я пытаюсь разобрать:
*****************
ID: 1234567 // 7 digit uuid
mistakes: There may be some mistakes here, or there may not be any mistakes //optional
mistake type: mistake background // "YES" or "NO"
report: <xml><item>blah, blah</item></xml>
*****************
На самом деле файл может выглядеть так:
*****************
ID: 1234567
mistakes:
NO: happened on the playground
report: <xml><item>black eye when playing basketball</item><reason>elbow</reason></xml>
*****************
*****************
ID: 1234568
mistakes: Teacher was not watching students at the time of incident
YES: teacher turned her back after seeing an altercation
report: <xml><item>fight</item><reason>None</reason></xml>
*****************
*****************
ID: 1234569
mistakes:
NO
report: <xml><item>Child needed band-aid</item><reason>scrape</reason></xml>
*****************
*****************
ID: 1234570
mistakes:
NO
report: <xml><item>Child needed tissue</item><reason>runny nose</reason></xml>
*****************
...
...
Я пытаюсь поместить «ключи» (идентификатор, ошибки, тип ошибки, отчет) в Map
для дальнейшей агрегации и обработки.
Я пытался использовать регулярное выражение и добился минимального успеха, но клиент продолжает изменять структуру отчета и отбрасывает весь шаблон. Я ищу что-то, что может быть немного проще в обслуживании. В прошлом у меня было легкое время с преобразованиями xsl для данных, подобных этому, однако это не чистый xml, и я не знаю, подбросит ли Java или нет текущий формат. Я спросил клиента, готовы ли они изменить формат, но они не заинтересованы в этом.
У кого-нибудь есть мысли о том, как сделать этот синтаксический анализ проще в обслуживании?
Спасибо!
РЕДАКТИРОВАТЬ:
У меня нет с собой регулярного выражения, но вот его суть
ID:\s*(\\d{7}).*mistakes:\s*(\\d*).*mistake type:\s*(\\d*).*report:\s*(.*)
:
... Почему это сложно? Пожалуйста, покажите какой-нибудь код - person Dici   schedule 10.04.2015