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를 생성하는 데 사용되는 동안 파일을 구문 분석하는 데 사용됩니다.