2017-01-31 2 views
0

내가 색슨 9.7.0-14 EE 및 XML 빈스-2.6.0/XML 빈스 - XPath는-2.6.0색슨 9.7 및 XML 빈스/XPath를

Movement mov = (Movement) XPathUtils.executeQueryNoResultNull(message.getPayload(), "//trx:Movement [@tipo='RESTO']"); 

와 내 웹 응용 프로그램에서 XPath를 사용하려고 해요

public static XmlObject executeQueryNoResultNull(XmlObject source, String query) { 
     XmlObject[] results = source.selectPath(DECLARE_NS + "$this" + query); 
     if (results.length == 0) { 
      return null; 
     } else { 
      return results[0]; 
     } 
    } 

나는이 오류

java.lang.RuntimeException: Trying XBeans path engine... Trying XQRL... Trying XDK... Trying delegated path engine... FAILED on declare namespace trx='http://www.test.com/xxx/xx/trx';$this//trx:Movement[@tipo='RESTO'] 
    at org.apache.xmlbeans.impl.store.Path.getCompiledPath(Path.java:185) 
    at org.apache.xmlbeans.impl.store.Path.getCompiledPath(Path.java:136) 
    at org.apache.xmlbeans.impl.store.Cursor._selectPath(Cursor.java:902) 
    at org.apache.xmlbeans.impl.store.Cursor.selectPath(Cursor.java:2634) 
    at org.apache.xmlbeans.impl.values.XmlObjectBase.selectPath(XmlObjectBase.java:476) 
    at org.apache.xmlbeans.impl.values.XmlObjectBase.selectPath(XmlObjectBase.java:460) 

문제의 XML 빈스가 있나요? Saxon 만 사용하고 XMLBeans를 제거 할 수 있습니까? 여기

내을 Module.xml

<?xml version="1.0" encoding="UTF-8"?> 
<module xmlns="urn:jboss:module:1.1" name="app-common"> 
    <resources> 
     <resource-root path="jsr173_1.0_api.jar"/> 
     <resource-root path="resolver.jar"/> 
     <resource-root path="xbean_xpath.jar"/> 
     <resource-root path="saxon9ee.jar"/> 
     <resource-root path="saxon9-dom.jar"/> 
     <resource-root path="xmlbeans-2.6.0.jar"/> 
+0

이 메시지는 일반적으로 Saxon 클래스가 발견되지 않음을 나타냅니다. jar 파일이 실제로 어디에 설치되어 있고,'module.xml '의'path' 값에있는 jar 파일의 이름이 JAR 파일의 실제 이름과 일치하는지 다시 확인하는 것이 좋습니다. 파일 시스템. 또한 Saxon 버전이 XMLBeans 문서의 내용과 일치하는지 확인해야 할 수도 있습니다. – sideshowbarker

+0

JAR 파일이 정확하고 JBoss 모듈 디렉토리에 있습니다. https://wiki.apache.org/xmlbeans/XmlBeansFaq#whatJars 여기를 보면 Saxon 9.7이 XMLBeans에서 지원되지 않는 것 같습니다. 내가 잘못 ? – user817057

+0

여기 내 JBoss modules 디렉토리 http://imageshack.com/a/img924/9306/K0MIpI.png – user817057

답변

0

나는 XML 빈스에 전문가는 아니지만, 그 문제는 문제의 "XPath는"표현이

declare namespace trx='http://www.test.com/xxx/xx/trx';$this//trx:Movement[@tipo='RESTO']

이되지 않는 것입니다 궁금해 true XPath ('네임 스페이스 선언'때문에) 따라서 타사 XPath 엔진에서 작동하지 않습니까?

+0

예를 들면 다음과 같습니다. Movement MO = (Movement) XPathUtils.executeQueryNoResultNull (message.getPayload(), "// trx : Movement"); 문제는 "[@ tipo = 'RESTO']" – user817057

+0

인 것 같습니다. 문제는 네임 스페이스 선언 (아닌 것)보다 술어 (유효한 XPath)라고 생각하게합니다. –

관련 문제