我试图在 XML 文件上运行一些 Xquery,但每次我调用 xmlObject.execQuery() 时,它都会通过 OutterXml 而不是 InnerXml。让我解释一下,我有这个 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
失败。