Хорошо.Я решил это с помощью Xtext.Не так уж сложно, и теперь у меня есть чистая модель моего CSV-файла.
- Загрузка установки eclise
- Выбор Eclipse DSL Tools при установке
- Запуск eslise DSL
- Создать новый проект "Xtext Project".Не забудьте отметить Facets> Eclipse plug-in
- Чем перейти к пакету базовых имен> src> [ваш базовый пакет].Там вы увидите * .xtext файл
- Опишите ваш .csv файл
- Рядом вы увидите * .mwe2 файл.Щелкните правой кнопкой мыши по нему> Run As> MWE2 Workflow.Это сгенерирует все, что вам нужно, и затмение потребует
- Щелкните правой кнопкой мыши по пакету базовых имен> Run As> Eclipse Application> Launch Runtime Eclipse.Он запустит новый экземпляр приложения Eclipse, но это будет ваш экземпляр Eclipse.Здесь вы должны создать новый проект с файлом *. [Your_extention].your_extention - это расширение, которое вы выбрали на первой странице, когда создавали проект.
- Поместите содержимое файла CSV в этот новый файл.
сейчас, если хотите, вы можете открыть этофайл с образцом редактора отражающей модели Ecore (щелкните правой кнопкой мыши по файлу> откройте с помощью> образца редактора отражающей модели Ecore).Там вы увидите, что ваш CSV-файл "проанализирован" так, как вы описали ранее в * .xtext файле.
Теперь вам нужно создать * .jar-файл, чтобы реализовать его в вашем Java-проекте.Там нет ничего особенного.
mvn clean package install
Я не помню, но сначала думаю, что я соберу [ваш базовый пакет] .parent пакет, а затем соберу [ваш базовый пакет].
==================
В вашем Java-проекте вы должны сделать что-то вроде этого:
// init dsl model. It's standalone because it can work without eclipse and stuff
NameOfYourXtextProjectStandaloneSetup.doSetup();
NameOfYourXtextProjectStandaloneSetupGenerated ssg = new NameOfYourXtextProjectStandaloneSetupGenerated();
// get injector to get environment members
Injector injector = ssg.createInjector();
ByteArrayInputStream inputStream = new ByteArrayInputStream(yourCsvTextAsString.getBytes());
XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class);
Resource resource = resourceSet.createResource(URI.createURI("name.[your_extention]"));
try {
resource.load(inputStream, Collections.EMPTY_MAP);
} catch (IOException e) {
log.error("Error while reading from resource");
return Collections.EMPTY_LIST;
}
return (List<TransactionsFile>) (EList) resource.getContents();