XML ファイルに対して Xquery を実行しようとしていますが、xmlObject.execQuery() を呼び出すたびに、InnerXml ではなく OutterXml に渡されます。説明させてください、私はこのXMLを持っています:
<test><MyXml><someValues><MoreNodes>Value1</MoreNodes></someValues></MyXml></test>
そして、これは私のコードです:
XmlObject inputXml = XmlObject.Factory.parse(xmlFileContent).selectChildren(new QName("test"))[0];
paramMap.put("var1", inputXml);
options.setXqueryVariables(paramMap);
XmlObject[] resultsObjects = xmlObject.execQuery("declare variable $var1 as element() external; <a>{$var1/someValues/MoreNodes}</a>", options);
しかし、これは を返します<a/>
。
XQueryを次のように変更すると
declare variable $var1 as element() external; <a>{$var1/MyXml/someValues/MoreNodes}</a>
次に、期待する結果が得られます。<a><MoreNodes>Value1</MoreNodes></a>
これらは私が行っているテストにすぎませんが、実際には XQuery はコンパイルされ、OSB で実行されているファイルから読み取られるため、XQuery の内容を変更して正しい XPath を使用することはできません。
私の問題を解決する方法について何か考えはありますか?
.selectChildren(new QName("test"))[0];
ところで、コードを削除するとxmlObject.execQuery
失敗します。