gpt4 book ai didi

dataweave - 在 Dataweave 2.0 中添加默认 namespace 的其他方法?

转载 作者:行者123 更新时间:2023-12-05 02:40:35 25 4
gpt4 key购买 nike

我最近通过查阅此 doc page 了解了如何在 XML 中添加默认 namespace .

%dw 2.0
output application/xml
var dns = {uri: "http://api.acme.com/customer", prefix: ""} as Namespace
---
dns#customer: {
dns#name: "Max",
dns#city: "LA"
}

生成以下 xml:

<?xml version='1.0' encoding='UTF-8'?>
<customer xmlns="http://api.acme.com/customer">
<name>Max</name>
<city>LA</city>
</customer>

还有其他方法可以使用 ns 声明吗?有关于 Namespace 类型的文档吗?我找不到。

最佳答案

它是一个相当简单的类型,可能定义如下:

%dw 2.0
type Namespace = {
URI: String,
prefix: String
}

Namespace 仅真正用于 XML,并且具有相当基本的信息。我有一些我使用的“食谱”,比如递归附加 namespace 的东西:

%dw 2.0

fun appendNamespace(data, nsSelector: (k: Key) -> Namespace | Null) =
data match {
case is Array -> data map appendNamespace($, nsSelector)
case is Object -> data mapObject do {
var ns0 = nsSelector($$)
---
if (ns0 != null) ns0#"$($$)": appendNamespace($, nsSelector)
else ($$): appendNamespace($, nsSelector)
}
else -> data
}

这样使用:

%dw 2.0

ns soapenv http://schemas.xmlsoap.org/soap/envelope/
ns tem http://tempuri.org/

output application/xml
---
{
soapenv#Envelope: {
soapenv#Header: null,
soapenv#Body: payload appendNamespace tem
}
}

当然还有命名空间选择器 (payload.someKey.#),它返回该键的 Namespace 对象。除此之外,我还没有看到其他关于它的实际用例或与之交互的有用方法。看到有人发布其他更有用的东西会很有趣,但这就是我的全部。

关于dataweave - 在 Dataweave 2.0 中添加默认 namespace 的其他方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68489991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com