2013-08-13 6 views
0

화면 데이터의 CSV 스냅 샷을 생성하는 기능을 쓰고 있습니다.Dozer XML 매핑 파일에서 CsvDozerBeanWriter가 열 머리글을 가져 오게하려면 어떻게합니까?

데이터 기반이어야합니다. 따라서 Java에서 각 스냅 샷을 하드 코딩하지 않고 XML 파일이나 데이터베이스와 같은 데이터 소스에서로드해야합니다. 데이터는 Java Bean에 들어 있습니다.

Dozer 확장자가 2.1.0 인 SuperCSV를 사용하고 있습니다.

Dozer XML 매핑 파일의 열과 콩의 매핑을 코딩 할 수 있으므로이 조합은 완벽하게 보입니다.

이것은 데이터에는 잘 작동하지만 모든 예제 및 테스트 사례에서 수행 한 것처럼 Java에서 하드 코딩하는 것 이외의 CSV 열 헤더에 사용할 문자열을 지정하는 방법을 찾지 못했습니다. 보았다. 그것은 데이터 중심이 아닙니다.

mapper 파일에서 열 헤더를 코딩 할 수있는 방법이 있습니까? 또는 매퍼 파일에서 추출하고 목록을 구성하여 writerHeader() 메서드에 전달할 수 있습니까?

헤더를 지정하는 XML의 <Field> 태그에 몇 가지 추가 메타 데이터 표기법이 제공되는 것이 가장 이상적이지만, 헤더로 빈 속성 이름을 사용하는 것이 좋을 것 같습니다.

제가 SourceForge에 게시했지만, 여기에 500 개의 오류가 있습니다.

답변

1

저는 슈퍼 CSV 개발자입니다. 내가 처음 들어 본 사람은 누가 CsvDozerBeanWriter과 자신의 DozerBeanMapper을 사용하고 있다는 것입니다.이 기능을 유용하게 사용하는 것이 좋습니다. :)

그래서 '데이터 중심'이라는 목표는 무엇입니까? 코드가 정말 일반적이기를 원하는 것처럼 들리므로 XML을 변경하여 CSV를 변경할 수 있습니다. 그게 맞습니까? 물론, 당신은 동적으로 셀 프로세서를 구성 할 수 없습니다 ... 아니면 당신도 그렇게하려고합니다 !!

Doher의 MappingMetadata API를 살펴 보겠습니다.이 API는에서 getMappingMetadata()을 호출하여 액세스 할 수 있습니다. 필자는 한번도 사용하지 않았지만이 방법으로 열 이름을 파생시킬 수있는 것처럼 보입니다 (필드 이름으로 제한 될 수도 있음).

그렇지 않으면 XML 파일을 직접 구문 분석해야합니다 (아마도 XPath를 사용합니다). 열 이름에 XML의 다른 메타 데이터를 사용하려면이 방법을 사용해야합니다.

+0

예. 더 큰 동기 부여는 소프트웨어를 재배포하지 않고도 새로운 "스냅 샷"을 배포 할 수 있기를 원합니다. 어제 나는 MappingMetadata를 사용하는 것과 같은 아이디어를 가지고 있었지만, 다소 복잡하다고 생각했고, 문서의 예제와 관련하여 몇 가지 문제가 발생했습니다. 나는 내 자신의 메타 데이터 (머리글)를 포함 할 수있는 롤 - 자신의 미니 버전을 선호하고 있습니다. – DaBlick