32.4. Cryostat 빌더

32.4.1. 개요

org.apache.camel.builder.xml.XPathBuilder 클래스를 사용하면 exchange와 독립적으로 Cryostat 표현식을 평가할 수 있습니다. 즉, 모든 소스의 XML 조각이 있는 경우 Cryostat Builder 를 사용하여 XML 조각에서 Cryostat 표현식을 평가할 수 있습니다.

32.4.2. 일치하는 표현식

matches() 메서드를 사용하여 지정된 Cryostat 표현식과 일치하는 하나 이상의 XML 노드를 찾을 수 있는지 확인합니다. Cryostat Builder 를 사용하여 Cryostat 식과 일치하는 기본 구문은 다음과 같습니다.

boolean matches = XPathBuilder
                    .xpath("Expression")
                    .matches(CamelContext, "XMLString");

여기서 지정된 식인 Expression 은 XML 조각, XMLString, 결과가 true와 일치하는 하나 이상의 노드가 발견되면 true에 대해 평가됩니다. 예를 들어 다음 예제에서는 true 를 반환하는데, 이는 Cryostat 표현식이 xyz 특성에서 일치하는 항목을 찾기 때문에 true를 반환합니다.

boolean matches = XPathBuilder
                    .xpath("/foo/bar/@xyz")
                    .matches(getContext(), "<foo><bar xyz='cheese'/></foo>"));

32.4.3. 표현식 평가

evaluate() 메서드를 사용하여 지정된 Cryostat 표현식과 일치하는 첫 번째 노드의 내용을 반환합니다. Cryostat Builder 를 사용하여 Cryostat 식을 평가하는 기본 구문은 다음과 같습니다.

String nodeValue = XPathBuilder
                    .xpath("Expression")
                    .evaluate(CamelContext, "XMLString");

필요한 형식을 evaluate() 의 두 번째 인수로 전달하여 결과 유형을 지정할 수도 있습니다. 예를 들면 다음과 같습니다.

String name = XPathBuilder
                   .xpath("foo/bar")
                   .evaluate(context, "<foo><bar>cheese</bar></foo>", String.class);
Integer number = XPathBuilder
                   .xpath("foo/bar")
                   .evaluate(context, "<foo><bar>123</bar></foo>", Integer.class);
Boolean bool = XPathBuilder
                   .xpath("foo/bar")
                   .evaluate(context, "<foo><bar>true</bar></foo>", Boolean.class);