Java XmlObject.execQuery处理OuterXml而不是InnerXml

Java XmlObject.execQuery处理OuterXml而不是InnerXml,java,xml,xmlbeans,Java,Xml,Xmlbeans,我试图在XML文件上运行一些Xquery,但每次调用xmlObject.execQuery()时,它都会遍历OutterXml,而不是InnerXml。让我解释一下,我有以下XML: <test><MyXml><someValues><MoreNodes>Value1</MoreNodes></someValues></MyXml></test> Value1 这是我的代码: XmlObject

我试图在XML文件上运行一些Xquery,但每次调用xmlObject.execQuery()时,它都会遍历OutterXml,而不是InnerXml。让我解释一下,我有以下XML:

<test><MyXml><someValues><MoreNodes>Value1</MoreNodes></someValues></MyXml></test>
Value1
这是我的代码:

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);
XmlObject inputXml=XmlObject.Factory.parse(xmlFileContent)。选择children(新QName(“测试”))[0];
put(“var1”,inputXml);
options.setXqueryVariables(paramMap);
XmlObject[]resultsObjects=XmlObject.execQuery(“将变量$var1声明为元素()外部;{$var1/someValues/MoreNodes}”,选项);
但这会返回

如果我将XQuery更改为

declare variable $var1 as element() external; <a>{$var1/MyXml/someValues/MoreNodes}</a>
将变量$var1声明为元素()外部;{$var1/MyXml/someValues/MoreNodes}
然后我得到了我期望的结果:
Value1

这些只是我正在做的测试,但实际上XQuery将从OSB上编译和运行的文件中读取,因此我无法更改XQuery内容以使用正确的XPath

你知道怎么解决我的问题吗


顺便说一句,如果我删除了代码
。请选择children(新的QName(“test”))[0]
然后
xmlObject.execQuery
失败。

多次尝试后,我发现我可以执行以下操作:

<MyXml><someValues><MoreNodes>Value1</MoreNodes></someValues></MyXml>
XmlObject inputXml = XmlObject.Factory.parse(xmlFileContent).selectChildren(new QName("MyXml"))[0];
paramMap.put("var1", inputXml);

options.setXqueryVariables(paramMap);

XmlObject[] resultsObjects = xmlObject.execQuery("declare variable $var1 as element() external; <a>{$var1/someValues/MoreNodes}</a>", options);
Value1
*无需插入我之前插入的父节点

然后做一些类似的事情:

<MyXml><someValues><MoreNodes>Value1</MoreNodes></someValues></MyXml>
XmlObject inputXml = XmlObject.Factory.parse(xmlFileContent).selectChildren(new QName("MyXml"))[0];
paramMap.put("var1", inputXml);

options.setXqueryVariables(paramMap);

XmlObject[] resultsObjects = xmlObject.execQuery("declare variable $var1 as element() external; <a>{$var1/someValues/MoreNodes}</a>", options);
XmlObject inputXml=XmlObject.Factory.parse(xmlFileContent)。选择children(新QName(“MyXml”))[0];
put(“var1”,inputXml);
options.setXqueryVariables(paramMap);
XmlObject[]resultsObjects=XmlObject.execQuery(“将变量$var1声明为元素()外部;{$var1/someValues/MoreNodes}”,选项);
通过这两个变化,我得到了我想要的:

<a><MoreNodes>Value1</MoreNodes></a>
Value1
希望这能帮助我遇到同样问题的人。关于如何使用这些类,没有太多文档

谢谢