如何解决如何使用 XQuery 将 JSON 转换为 XML?
我收到了 JSON 格式的输入请求,我想将其转换为 jsonx 或 XML。我不能使用 Convert-query-params 所以我必须使用 Gatewayscritp 或 XQuery 来转换它。但我无法达到预期的输出。
JSON 请求:数组中的值不断变化。
{
"Employees": [
{
"ID":"1234","Address":"abcd"
}
]
}
我尝试过的 XQuery:
declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";
declare namespace xsd = "http://www.w3.org/2001/XMLSchema";
declare option output:method "json";
declare option jsoniq-version "0.4.42";
declare function local:test-pre($e as element(),$pre as xsd:string) as xsd:boolean
{
if ($pre="xml") then false()
else if (name($e/..)) then true()
(:
else if not($pre = in-scope-prefixes($e/..)) then true()
else if (namespace-uri-for-prefix($pre,$e) !=
namespace-uri-for-prefix($pre,$e/..)
) then true()
:)
else false()
};
declare function local:transform($e as element()) as item()* {
jn:object(
if ($e/*) then
{
name($e) : jn:object(
(
for $pre in in-scope-prefixes($e)
return
if ( local:test-pre($e,$pre) ) then
{ concat("-xmlns:",$pre) :
namespace-uri-for-prefix($pre,$e)
}
else (),for $node in $e/node()
return
typeswitch($node)
case element() return local:transform($node)
(: case comment() ... :)
default return ()
)
)
}
else
{ name($e) : string($e) }
)
};
local:transform(/*)
但是,我收到错误消息:“XPTY0020:上下文项不是节点”
我也尝试过使用 XSLT 来设置上下文:
<xsl:stylesheet extension-element-prefixes="dp" exclude-result-prefixes="dp" version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dp="http://www.datapower.com/extensions">
<xsl:template match="/">
<xsl:variable name="request" select="dp:variable('var://context/INPUT')"/>
<dp:set-variable name="'var://context/__JSONASjsonx/'" value="$request"/>
</xsl:template>
</xsl:stylesheet>
谁能帮我把json转换成xml?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。