从SOAP响应中提取多个值

时间:2016-02-08 13:22:00

标签: soapui

我在SOAP中有一个XML响应,其格式如下

<diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <NewDataSet xmlns="">
    <Status diffgr:id="Status12" msdata:rowOrder="11">
    <id>28</id>
    <name>Review</name>
    <categoryId>3</categoryId>
    <assignrule>P</assignrule>
    <ismoveAssign>0</ismoveAssign>
    <isActive>1</isActive>
    </Status>
    </NewDataSet>
</diffgr:diffgram>

如果我在SOAPath的XPath Match配置中执行相同的操作,请在下面显示以下XPath,请找到附加的屏幕截图

//*[local-name() = 'NewDataSet']/*[local-name()='Status'][12]/*[local-name()='name']

但我有许多这样的值需要通过编写XQuery来提取。

enter image description here

<Result>
{
    for $x in //*[local-name() = 'NewDataSet']/*[local-name()='Status']/*    [local-name()='name']

    return <name> string ($x) </name>
}
</Result>

上面的结果给出了无效的XPath。

有人可以在我出错的地方帮助我吗?这些信息是否足够?

1 个答案:

答案 0 :(得分:1)

问题可能是您使用带有XPath Match表达式的XQuery断言。如果检查SOAPUI执行日志,您将看到:

22:19:20,008 ERROR [SoapUI] An error occurred [net.sf.saxon.trans.XPathException: XPath syntax error at char 0 in {<}
: Node constructor expressions are allowed only in XQuery, not in XPath].

XQuery Math有一个特定的断言,请改用:

enter image description here

希望它有所帮助,