我调用了一个 SOAP 服务,并喜欢使用 XQuery 将其转换为 JSON,但结果总是显示有错误标记:
这是 SOAP:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:NS1="http://www.inspirejo.com/soapwheather" <soapenv:Body>
<NS1:wheatherResponse>
<CountryName>United states</CountryName>
<countryCode>USA</countryCode>
<cityCode>NY</cityCode>
<cityName>New york</cityName>
<respCode>****************</respCode>
<minDegree>12</minDegree>
<maxDegree>21</maxDegree>
<hummedity>21</hummedity>
<windspeed>20</windspeed>
</NS1:wheatherResponse>
</soapenv:Body>
</soapenv:Envelope>
XQuery 代码:
xquery version "1.0";
declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";
declare namespace xsd = "http://www.w3.org/2001/XMLSchema";
declare namespace soapenv = "http://schemas.xmlsoap.org/soap/envelope/";
declare namespace NS1 = "http://www.inspirejo.com/soapwheather/";
declare option output:method "json";
declare option jsoniq-version "0.4.42";
let $soapresult := soapenv:Envelope/soapenv:Body/NS1:wheatherResponse
return{
"countryCode" : $soapresult/countryCode,
"cityCode" : $soapresult/cityCode,
"countryName" : $soapresult/countryName,
"cityName" : $soapresult/cityName,
"minDegree" : $soapresult/minDegree,
"maxDegree" : $soapresult/maxDegree,
"hummedity" : $soapresult/hummedity,
"windSpeed" : $soapresult/windSpeed
}
我修复了令牌错误,但输出仍然和输出转换为:
illegal character '{' at offset 1 of http://192.168.0.211:12019/inspire/wservice/wheatherRequest?countryCode=USA&cityCode=NY
.{.
"countryCode" : null,
"cityCode" : null,
"countryName" : null,
"cityName" : null,
"minDegree" : null,
"maxDegree" :null,
.. etc. all transformation result is null.
}