48.4. 1. CsvRecord
CsvRecord 주석은 모델의 루트 클래스를 식별하는 데 사용됩니다. 이는 레코드 = CSV 파일의 줄이며 여러 자식 모델 클래스에 연결할 수 있습니다.
| 주석 이름 | 레코드 유형 | level |
|---|---|---|
| CsvRecord | csv | class |
| 매개변수 이름 | type | 정보 |
|---|---|---|
| separator | string | 필수 - ',' 또는 ';' 또는 ' anything'일 수 있습니다. 지원되는 유일한 공백 문자는 탭(\t)입니다. 다른 공백 문자(공백)는 지원되지 않습니다. 이 값은 정규식으로 해석됩니다. 정규식에서 특별한 의미가 있는 기호(예: '|' 기호)를 사용하려면 "|'와 같이 마스킹해야 하는 것보다"|' 기호입니다. |
| skipFirstLine | boolean | 선택 사항 - default value = false - CSV 파일의 첫 번째 줄을 건너뛸 수 있습니다. |
| crlf | string | 선택 사항 - 가능한 값 = WINDOWS,UNIX,MAC 또는 custom; 기본값. WINDOWS - 사용할 캐리지 반환 문자를 정의할 수 있습니다. 앞에 나열된 세 개 이외의 값을 지정하면 입력하는 값 (custom)이 CRLF 문자로 사용됩니다. |
| generateHeaderColumns | boolean | 선택 사항 - default value = false - 는 CSV의 헤더 열을 생성하는 데 사용합니다. |
| autospanLine | boolean | Camel 2.13/2.12.2: 선택 사항 - 기본값 = false - 이 옵션을 사용하면 마지막 열이 행 끝으로 자동 확장됩니다(예: 주석 처리한 경우 행도 모든 문자, 구분 기호 문자). |
| isOrdered | boolean | 선택 사항 - default value = false - CSV가 생성될 때 필드의 순서를 변경할 수 있습니다. |
| quote | 문자열 | Camel 2.8.3/2.9: 옵션을 사용하면 CSV가 생성될 때 필드의 인용 문자를 지정할 수 있습니다. 이 주석은 모델의 루트 클래스에 연결되며 한 번만 선언해야 합니다. |
| quoting | boolean | *Camel 2.11:*optional - default value = false - CSV 마샬링 시 값(및 헤더)을 인용해야 함을 나타냅니다. |
| endWithLineBreak | boolean | Camel 2.21: 선택 사항 - 기본값 = true - CSV 생성 파일이 줄 바꿈으로 끝나야 하는지 나타냅니다. |
case 1 : separator = ','
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 : separator = '|'
이전 사례와 비교하여 여기서 구분 기호는 '|' 대신 ';'입니다.
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 레코드를 구문 분석할 필드에 구분 기호로도 구분 기호로 사용되는 ',' 또는 ';'가 포함된 필드에 다른 전략
을 찾아 이 사례를 처리하는 방법을 camel bindy를 알립니다. 데이터가 쉼표로 포함된 필드를 정의하려면 simple 또는 double quotes
를 구분 기호(예: '10', 'Street 10, NY', 'USA' 또는 "10", "Street 10, NY", "USA")로 사용합니다.
Remark: 이 경우 단순 또는 큰따옴표인 줄의 첫 번째 문자와 마지막 문자가 bindy로 제거됩니다.
"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 또는 bindy를 사용하면 레코드를 작은따 옴표 또는 큰따옴표로 묶고 CSV에서 오브젝트로 나눌 때 이러한 따옴표를 자동으로 제거합니다. 따라서 구분 기호에 따옴표를 포함하지 말고 다음과 같이 간단히 수행합니다.
"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15" 2500","USD","08-01-2009"
@CsvRecord( separator = "," )
public Class Order {
}
If you want to marshal from Object to CSV and use quotes, then you need to specify which quote character to use, using the quote attribute on the @CsvRecord:
@CsvRecord( separator = ",", quote = "\"" )
public Class Order {
}케이스 5: separator & skipfirstline
이 기능은 클라이언트가 파일의 첫 번째 줄에, 데이터 필드의 이름을 보유하려는 경우에 유용합니다.
주문 ID, 클라이언트 ID, 이름, 성, isin 코드, 계측 이름, 수량, 통화, 날짜
구문 분석 프로세스 중에 이 첫 번째 줄을 건너뛰어야 함을 알리기 위해 특성을 사용합니다.
@CsvRecord(separator = ",", skipFirstLine = true)
public Class Order {
}case 6 : generateHeaderColumns
생성된 CSV의 첫 번째 줄에 추가하려면 다음과 같이 주석에서 generateHeaderColumns를 true로 설정해야 합니다.
@CsvRecord( generateHeaderColumns = true )
public Class Order {
}결과적으로marshaling 프로세스 중에 Bindy가 다음과 같이 CSV를 생성합니다.
주문 ID, 클라이언트 ID, 이름, 성, isin 코드, 계측 이름, 수량, 통화, 날짜
10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD,08-01-2009
케이스 7: 캐리지 리턴
comel-bindy가 실행되는 플랫폼이 Windows가 아닌 Macintosh 또는 Unix가 아닌 경우 다음과 같이 crlf 속성을 변경할 수 있습니다. 세 가지 값 사용 가능: WINDOWS, 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 {
}case 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;
}pos는 CSV를 생성하는 데 사용되는 동안 파일을 구문 분석하는 데 사용됩니다.