首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XmlObject.execQuery在OuterXml而不是InnerXml上工作

XmlObject.execQuery在OuterXml而不是InnerXml上工作
EN

Stack Overflow用户
提问于 2013-09-05 19:27:49
回答 1查看 523关注 0票数 0

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

代码语言:javascript
复制
<test><MyXml><someValues><MoreNodes>Value1</MoreNodes></someValues></MyXml></test>

这是我的密码:

代码语言:javascript
复制
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更改为

代码语言:javascript
复制
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就会失败。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-10 21:09:54

经过多次尝试后,我发现我可以做如下事情:

代码语言:javascript
复制
<MyXml><someValues><MoreNodes>Value1</MoreNodes></someValues></MyXml>

*不需要插入我之前插入的父节点<test>

然后做一些类似的事情:

代码语言:javascript
复制
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);

通过这两个改变,我得到了我想要的东西:

代码语言:javascript
复制
<a><MoreNodes>Value1</MoreNodes></a>

希望这能帮助那些有着和我以前一样的问题的人,facing.There不是很多关于如何使用这个类的文档。

谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18644399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档