48.4. 1. CsvRecord
CsvRecord 주석은 모델의 루트 클래스를 식별하는 데 사용됩니다. 레코드 = CSV 파일의 한 줄이며 여러 하위 모델 클래스에 연결할 수 있습니다.
| 주석 이름 | 레코드 유형 | level |
|---|---|---|
| CsvRecord | csv | 클래스 |
| 매개변수 이름 | type | 정보 |
|---|---|---|
| 구분 | string | mandatory - ',' 또는 ';' 또는 'anything'일 수 있습니다. 지원되는 유일한 공백 문자는 탭(\t)입니다. 다른 공백 문자(spaces)는 지원되지 않습니다. 이 값은 정규식으로 해석됩니다. 정규 표현식에서 특별한 의미가 있는 기호를 사용하려는 경우(예: '|')를 마스크해야 하는 것보다'|' 기호를 사용합니다. |
| skipFirstLine | boolean | 선택 사항 - 기본값 = false - CSV 파일의 첫 번째 줄을 건너뛸 수 있습니다. |
| CRLF | string | 선택 사항 - 가능한 값 = ECDHEDOWS,UNIX, MAC 또는 custom 값. ECDHEDOWS - 사용할 캐리지 반환 문자를 정의할 수 있습니다. 앞에 나열된 세 개 이외의 값을 지정하면 입력한 값(사용자 지정)이 CRLF 문자로 사용됩니다. |
| generateHeaderColumns | boolean | 선택 사항 - default value = false - CSV에서 생성하는 헤더 열을 생성하기 위해 사용합니다. |
| autospanLine | boolean | Camel 2.13/2.12.2: 선택 사항 - default value = false -가 활성화된 경우 마지막 열은 행 끝에 자동으로 지정됩니다(예: 댓글이 포함된 경우). |
| isOrdered | boolean | 선택 사항 - default value = false - CSV가 생성될 때 필드의 순서를 변경할 수 있습니다. |
| quote | 문자열 | Camel 2.8.3/2.9: option - CSV가 생성될 때 필드의 인용 문자를 지정할 수 있습니다. 이 주석은 모델의 루트 클래스와 연결되며 한 번 선언해야 합니다. |
| 인용 | boolean | *Camel 2.11:*optional - default value = false - CSV가 생성될 때 마샬링할 때 값(및 헤더)을 인용해야 하는지 나타냅니다. |
| endWithLineBreak | boolean | Camel 2.21: 선택 사항 - default value = true - CSV 생성 파일이 줄 바꿈으로 종료되어야 하는지 나타냅니다. |
case 1 : 구분자 = ','
CSV 레코드의 필드를 분리하는 데 사용되는 구분자는 ','입니다.
10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500,
USD,08-01-2009
@CsvRecord( separator = "," )
public Class Order {
}
case 2 : separator = ';'
이전 경우와 비교하여 여기서 구분자는 ',' 대신 ';'입니다.
10; J; Pauline; M; XD12345678; Fortis Dynamic 15/15; 2500; USD; 08-01-2009
@CsvRecord( separator = ";" )
public Class Order {
}
case 3 : 구분자 = '|'
이전 경우와 비교하여 여기서 구분 기호는 ';' 대신 '|'입니다.
10| J| Pauline| M| XD12345678| Fortis Dynamic 15/15| 2500| USD|
08-01-2009
@CsvRecord( separator = "\\|" )
public Class Order {
}
case 4 : separator = '\",\"'
Camel 2.8.2 이상에 적용됩니다.
CSV 레코드의 구문 분석 필드에 구분 기호로도 사용되는 ',' 또는 ';'가 포함된 경우, 이 케이스를 처리하는 방법을 알릴 다른 전략
을 찾습니다. 데이터가 포함된 필드를 쉼표로 정의하려면 구분자(예: '10', 'Street 10, 'USA', 'USA', "10", "Street 10,ECDHE", "USA")로 단순 또는 이중 따옴표
를 사용합니다.
참고: 이 경우 단순하거나 이중 따옴표인 줄의 첫 번째 및 마지막 문자는 바인딩에 의해 제거됩니다.
"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15"
2500","USD","08-01-2009"
@CsvRecord( separator = "\",\"" )
public Class Order {
}
Camel 2.8.3/2.9 에서 바인딩되지 않으면 레코드가 단일 또는 이중 따옴표로 묶어 있는지 자동으로 탐지하고 CSV에서 Object로 미완성할 때 해당 따옴표를 자동으로 제거합니다. 따라서 구분 기호에 따옴표를 포함하지 말고 아래와 같이 단순해야 합니다.
"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15"
2500","USD","08-01-2009"
@CsvRecord( separator = "," )
public Class Order {
}
Object에서 CSV로 마샬링하고 따옴표를 사용하려면 아래와 같이 @CsvRecord에서 quote 속성을 사용하여 사용할 인용 문자를 지정해야 합니다.
@CsvRecord( separator = ",", quote = "\"" )
public Class Order {
}
case 5: 구분자 & skipfirstline
클라이언트가 파일의 첫 번째 줄에 있고 데이터 필드의 이름을 원하는 경우 흥미로운 기능입니다.
주문 ID, 클라이언트 ID, 이름, 성, 성, isin 코드, 도구 이름, 수량, 통화, 날짜
구문 분석 프로세스 중에 이 첫 번째 행을 건너뛰어야 한다는 것을 바인딩에 알리려면 특성을 사용합니다.
@CsvRecord(separator = ",", skipFirstLine = true)
public Class Order {
}
case 6 : generateHeader DestinationRules
생성된 CSV의 첫 번째 줄에서 추가하려면 다음과 같은 주석에서 generateHeader DestinationRules 특성을 true로 설정해야 합니다.
@CsvRecord( generateHeaderColumns = true )
public Class Order {
}
결과적으로 Bindy during the unmarshaling process will generate CSV like this:
주문 ID, 클라이언트 ID, 이름, 성, 성, isin 코드, 도구 이름, 수량, 통화, 날짜
10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD,08-01-2009
케이스 7: 탄수화수 반환
camel-bindy가 실행되는 플랫폼이 Windows가 아니지만 Macintosh 또는 Unix가 아닌 경우 이와 같이 crlf 속성을 변경할 수 있습니다. 세 가지 값을 사용할 수 있습니다. ECDHEDOWS, UNIX 또는 MAC
@CsvRecord(separator = ",", crlf="MAC")
public Class Order {
}
또한 어떤 이유로든 다른 줄 끝 문자를 추가해야 하는 경우 crlf 매개변수를 사용하여 지정할 수 있습니다. 다음 예제에서는 쉼표로 뒤에 줄 바꿈 문자를 사용할 수 있습니다.In the following example, we can end the line with a comma followed by the newline character:
@CsvRecord(separator = ",", crlf=",\n")
public Class Order {
}
사례 8: isOrdered
경우에 따라 모델의 CSV 레코드를 생성하는 동안 따라야 하는 순서가 구문 분석 중 사용되는 순서와 다릅니다. 그러면 이 경우 isOrdered = true 속성을 사용하여 이를 DataField 주석의 'position' 속성과 결합하여 표시할 수 있습니다.
@CsvRecord(isOrdered = true)
public Class Order {
@DataField(pos = 1, position = 11)
private int orderNr;
@DataField(pos = 2, position = 10)
private String clientNr;
}
remark: pos는 파일을 구문 분석하는 데 사용되며, stream은 CSV를 생성하는 데 사용됩니다.