375.14. 디버깅을 지원하는 네임스페이스 감사

Camel 2.10에서 사용 가능

사용자가 자주 직면하는 많은 수의 XPath 관련 문제는 네임스페이스 사용과 관련이 있습니다. 메시지에 존재하는 네임스페이스와 XPath 표현식이 알고 있거나 참조하는 네임스페이스 사이에 몇 가지 오해가 있을 수 있습니다. 네임스페이스 문제로 인해 XML 요소 및 속성을 찾을 수 없는 JavaScript 서술자 또는 표현식은 "실제로 네임스페이스 정의가 없는 경우"처럼 보일 수 있습니다.

XML의 네임스페이스는 완전히 필요하며, 네임스페이스를 자동으로 연결하기 위해 몇 가지 매직 또는 voodoo를 구현하여 사용을 단순화하는 것을 좋아하지만, true는 이 경로의 모든 작업이 표준과 일치하지 않고 상호 운용성을 크게 저하시킬 수 있다는 것입니다.

따라서 we can do is assist you in debugging these issues by adding two new features to the XPath Expression Language and are therefore accesible from both predicates and expressions.

#===GID 표현식의 네임 스페이스 Context를 로깅/predicate

내부 풀에서 새 XPath 표현식을 생성할 때마다 Camel은 org.apache.camel.builder.xml.XPathBuilder 로거에서 표현식의 네임스페이스 컨텍스트를 기록합니다. Camel은 네임스페이스 컨텍스트를 계층 구조(parent-child 관계)로 나타내므로 전체 트리는 다음 형식을 사용하여 재귀 방식으로 출력됩니다.

[me: {prefix -> namespace}, {prefix -> namespace}], [parent: [me: {prefix -> namespace}, {prefix -> namespace}], [parent: [me: {prefix -> namespace}]]]

다음 옵션 중 하나를 사용하여 이 로깅을 활성화할 수 있습니다.

  1. org.apache.camel.builder.xml.XPathBuilder 로거 또는 org.apache.camel 또는 루트 로거와 같은 일부 상위 로거에서 TRACE 로깅을 활성화합니다.
  2. 감사 네임스페이스에 표시된 대로 logNamespaces 옵션을 활성화합니다. 이 경우 INFO 수준에서 로깅이 발생합니다.