55.4.2. Unmarshaling


from("file://inbox")
  .unmarshal(bindy)
  .to("direct:handleOrders");
Copy to Clipboard Toggle word wrap

또는 Spring XML 파일과 같이 레지스트리에 정의된 다음 데이터 형식에 대해 명명된 참조를 사용할 수 있습니다.

from("file://inbox")
  .unmarshal("myBindyDataFormat")
  .to("direct:handleOrders");
Copy to Clipboard Toggle word wrap

Camel 경로는 inbox 디렉터리의 파일 선택, unmarshall CSV 레코드가 모델 오브젝트 컬렉션으로 선택하고 컬렉션
handleOrders 에서 참조하는 경로로 보냅니다.

반환된 컬렉션은 Map 오브젝트의 목록입니다. 목록의 각 맵에는 CSV의 각 줄에서 마샬링된 모델 개체가 포함되어 있습니다. 이 문제의 원인은 각 행이 두 개 이상의 오브젝트에 해당할 수 있기 때문입니다. 이는 단순히 한 줄에 하나의 개체가 반환될 것으로 예상하면 혼동될 수 있습니다.

각 오브젝트는 해당 클래스 이름을 사용하여 검색할 수 있습니다.

List<Map<String, Object>> unmarshaledModels = (List<Map<String, Object>>) exchange.getIn().getBody();

int modelCount = 0;
for (Map<String, Object> model : unmarshaledModels) {
  for (String className : model.keySet()) {
     Object obj = model.get(className);
     LOG.info("Count : " + modelCount + ", " + obj.toString());
  }
 modelCount++;
}

LOG.info("Total CSV records received by the csv bean : " + modelCount);
Copy to Clipboard Toggle word wrap

경로의 처리를 위해 이 맵에서 단일 Order 오브젝트를 추출하려는 경우 다음 내용에 따라 Splitter와 Processor의 조합을 사용할 수 있습니다.

from("file://inbox")
    .unmarshal(bindy)
    .split(body())
        .process(new Processor() {
            public void process(Exchange exchange) throws Exception {
                Message in = exchange.getIn();
                Map<String, Object> modelMap = (Map<String, Object>) in.getBody();
                in.setBody(modelMap.get(Order.class.getCanonicalName()));
            }
        })
        .to("direct:handleSingleOrder")
    .end();
Copy to Clipboard Toggle word wrap

Bindy는 unmarshalling을 위해 수신한 입력 스트림의 문자 세트 변환을 수행하기 위해 Exchange 인터페이스에서 정의된 사용자 이름 또는 CHARSET_NAME 헤더를 사용합니다. 일부 생산자(예: file-endpoint)에서는 문자 집합을 정의할 수 있습니다. 이 프로듀서의 변환은 이미 수행 할 수 있습니다. 때로는 unmarshal으로 보내기 전에 교환에서 이 속성 또는 헤더를 제거해야 합니다. 이를 제거하지 않으면 변환이 두 번 수행되어 원하지 않는 결과가 발생할 수 있습니다.

from("file://inbox?charset=Cp922")
  .removeProperty(Exchange.CHARSET_NAME)
  .unmarshal("myBindyDataFormat")
  .to("direct:handleOrders");
Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat