我试图在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上的文件中读取,因此我不能将XQueries内容更改为使用正确的XPath。
知道怎么解决我的问题吗?
顺便说一句,如果我删除了代码.selectChildren(new QName("test"))[0];,那么xmlObject.execQuery就会失败。
发布于 2013-09-10 21:09:54
经过多次尝试后,我发现我可以做如下事情:
<MyXml><someValues><MoreNodes>Value1</MoreNodes></someValues></MyXml>*不需要插入我之前插入的父节点<test>。
然后做一些类似的事情:
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);通过这两个改变,我得到了我想要的东西:
<a><MoreNodes>Value1</MoreNodes></a>希望这能帮助那些有着和我以前一样的问题的人,facing.There不是很多关于如何使用这个类的文档。
谢谢。
https://stackoverflow.com/questions/18644399
复制相似问题