2013-03-28 1 views
0

다음 코드를 사용하여 문자열에 저장된 XML 파일에서 일부 결과를 가져옵니다. 그러나 xquerycompiler는 이것을 내가 <result></result>에 넣도록 요구합니다. 그들을 묶어서 출력을 문자열로 가져올 수 없습니까? 여기 내 코드입니다 :Java에서 XQueryCompiler를 사용하여 값만 추출하십시오.

Configuration saxonConfig = new Configuration(); 
Processor processor = new Processor(saxonConfig);      

    XQueryCompiler xqueryCompiler = processor.newXQueryCompiler(); 
    XQueryExecutable xqueryExec = xqueryCompiler.compile("<result>{/book/chapter}</result>"); 
    XQueryEvaluator xqueryEval = xqueryExec.load(); 
    xqueryEval.setSource(new SAXSource(new InputSource(new StringReader(xmltext)))); 
    XdmDestination destination = new XdmDestination(); 
    xqueryEval.setDestination(destination); 
    xqueryEval.run(); 

    System.out.println(destination.getXdmNode()); 
+0

어려움을 볼 수는 없지만 요구 사항을 완전히 이해하고 있는지 확신 할 수 없습니다. 입력은 무엇이며 출력은 무엇입니까? 쿼리가'/ book/chapter'로 축소되면 어떤 실패를합니까? –

+0

이것은 내가 얻는 오류입니다 : "systemId *가없는 * module의 1 행에 오류가 있습니다 : 하나의 루트 노드 만 XdmDestination에 쓸 수 있습니다". 내 프로그램은 여러 장을 생성하지만 루트 노드에 포함되어 있지 않기 때문에 문제가 발생합니다. 해결책은 무엇입니까? – Jyotiska

+1

결과와 같은 요소 노드에서 챕터를 래핑하지 않으려면 XQuery document-node {} 생성자를 사용하여 문서 노드에서 래핑 할 수 있습니다. –

답변

1

왜 '결과'의 결과를 감싸지는 다시 문자열의 요소를 얻고, 다음 없애기 간단한 문자열 함수를 사용하는 <result> 및 후행 </result>를 선도?

+0

감사. 그건 의미가 있습니다. – Jyotiska

관련 문제