如何使用 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...