【发布时间】:2020-08-17 14:51:22
【问题描述】:
Informatica CAI 内部发生以下问题。这里我只能访问 Xquery 来编辑变量和构造数据。
我正在尝试将 JSON 的属性名称映射到数字。此问题的一个可读示例是输入/临时/输出变量 $json
等于
{
"Person":
{
"Name": "Jerry",
"Age": "42"
}
}
和一个临时变量 $MapTable
{
"Name": "3456_1",
"Age": "3456_2"
}
当尝试使用 Xquery 映射 $MapTable 中的数字以代替 $json 中的“姓名”和“年龄”时,我收到一个 “无效的元素名称。无效的 QName {3456_1}”错误。”我相信这是由于 XML 名称规定。
有谁知道解决这个问题的方法,所以我可以最终得到 $json 等于
{
"Person":
{
"3456_1": "Jerry",
"3456_2": "42"
}
}
注意:我在 Informatica 的云应用程序集成论坛上发布了相同的问题。
【问题讨论】:
-
没错,QName 不能以数字开头,见en.m.wikipedia.org/wiki/QName
-
你试过
declare option output:method "json";吗? -
嗨 Pavel,当我在我的 xquery 上面写这个表达式时,它没有验证成功,例如:声明选项输出:方法“json”; for $x in $input.JSON/node() return element {fn:node-name($x)}{5} 我需要定义或导入其他东西吗?或者也许在别处添加声明?
-
尝试返回一个字符串而不是元素。
-
使用 fn:replace 的解决方案解决了这个问题。
标签: json xml xquery informatica informatica-cloud