많은 엔터프라이즈 시스템이 XML 형식으로 데이터를 교환합니다. Camel은 XML 처리를 위한 강력한 도구들을 내장하고 있습니다.
XSLT(Extensible Stylesheet Language Transformations)로 XML 구조를 다른 XML이나 텍스트로 변환합니다.
<!-- src/main/resources/order-transform.xsl -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<order>
<id><xsl:value-of select="//orderId"/></id>
<amount><xsl:value-of select="//totalAmount"/></amount>
</order>
</xsl:template>
</xsl:stylesheet> // 라우트에서 XSLT 적용
from("direct:xmlInput")
.to("xslt:order-transform.xsl") // 클래스패스에서 XSLT 로드
.log("변환 완료: ${body}"); JAXB 어노테이션이 달린 Java 클래스와 XML 사이를 자동 변환합니다.
// JAXB 어노테이션으로 XML 구조 정의
@XmlRootElement(name = "order")
@XmlAccessorType(XmlAccessType.FIELD)
public class Order {
@XmlAttribute
private String id;
@XmlElement(name = "customer-name")
private String customerName;
@XmlElement
private double amount;
// getter, setter...
} // Camel에서 JAXB 마샬링/언마샬링
JaxbDataFormat jaxb = new JaxbDataFormat(Order.class.getPackage().getName());
from("file:xml-orders?noop=true")
.unmarshal(jaxb) // XML → Order 객체
.log("주문 ID: ${body.id}")
.process(e -> {
Order o = e.getIn().getBody(Order.class);
o.setAmount(o.getAmount() * 1.1); // 10% 추가
})
.marshal(jaxb) // Order 객체 → XML
.to("file:processed-orders"); from("direct:xmlOrder")
// XPath로 값 추출
.setHeader("orderId", xpath("//order/@id"))
.setHeader("amount", xpath("//order/amount/text()", Double.class))
// XPath로 조건 분기
.choice()
.when(xpath("//order/priority = 'HIGH'"))
.to("direct:highPriority")
.otherwise()
.to("direct:normal")
.end(); // camel-jackson-xml 의존성 필요
JacksonXMLDataFormat xmlFormat = new JacksonXMLDataFormat(Order.class);
JsonDataFormat jsonFormat = new JsonDataFormat(JsonLibrary.Jackson);
jsonFormat.setUnmarshalType(Order.class);
from("direct:xmlToJson")
.unmarshal(xmlFormat) // XML → Java 객체
.marshal(jsonFormat) // Java 객체 → JSON
.to("direct:jsonOutput"); // XPath에서 네임스페이스 처리
Namespaces ns = new Namespaces("o", "http://example.com/order");
from("direct:namespacedXml")
.setHeader("orderId", xpath("//o:order/@id", ns))
.to("direct:process"); 정보처리기사는 필기와 실기가 따로 접수되기 때문에 일정표가 복잡해 보입니다. 2026년 일정표를 바탕으로 필기에서 실기까지의 흐름을…
회계와 세무 분야 자격증은 입문용부터 국가전문자격까지 단계가 넓습니다. 일정표 자료로 확인된 시험을 중심으로, 어떤 시험이…
금융투자협회가 시행하는 자격시험은 투자권유자문인력, 투자권유대행인, 투자자산운용사처럼 이름이 비슷한 종목이 많아 처음 보면 헷갈립니다. 일정표 자료를…
자격증마다 접수 기간이 며칠인지, 접수가 끝나고 시험까지 얼마나 걸리는지, 시험 후 발표까지 얼마나 기다려야 하는지는…
ITQ, GTQ, DIAT는 모두 PC 활용 능력을 보여 주는 민간 자격이지만 시행기관과 평가 방식이 다릅니다.…
컴퓨터활용능력은 사무직 취업과 학점 인정 목적으로 가장 많이 응시하는 국가기술자격 중 하나입니다. 1급과 2급은 시험…