用于在 Xml 中检索属性的 Mule Dataweave 脚本
Mule Dataweave script for retrieving attributes in Xml
我的输入 Xml 如下所示
<?xml version="1.0" encoding="UTF-8"?>
<elements>
<element>
<id>123</id>
<items>
<item>
<attributes>
<attribute attribute-id="test1">attr1</attribute>
<attribute attribute-id="test2">attr2</attribute>
</attributes>
</item>
</items>
</element>
</elements>
我尝试使用以下 Dataweave 脚本:
%dw 1.0
%output application/xml
---
{
elements: { (payload.elements.*element map {
element: {
test1 : $.items.item.attributes.attribute when $.items.item.attributes.attribute.@attribute-id == 'test1' otherwise '',
test2 : $.items.item.attributes.attribute when $.items.item.attributes.attribute.@attribute-id == 'test2' otherwise ''
}
}
)
}
}
预期输出:
<?xml version='1.0' encoding='windows-1252'?>
<elements>
<element>
<test1>attr1</test1>
<test2>attr2</test2>
</element>
</elements>
实际输出:
<?xml version='1.0' encoding='windows-1252'?>
<elements>
<element>
<test1>attr1</test1>
<test2></test2>
</element>
</elements>
我的数据编织脚本需要进行哪些更改才能获得预期的输出?
试试这个
%dw 1.0
%output application/xml
---
{
elements: { (payload.elements.*element map {
element: {($.items.item.attributes.*attribute map {
($.@attribute-id) : $
})}
}
)
}
你的不工作,因为有多个 items.item.attributes.attribute
希望对您有所帮助。
检查下面的脚本
%dw 1.0
%output application/xml
---
{
elements: {
(payload.elements.*element map {
element: {
($.items.item.attributes.*attribute map ((element, index) -> {
(element.@attribute-id) : element when element.@attribute-id == "test1" or element.@attribute-id == "test2"
otherwise ''
}))
}
}
)
}
}
它检查 attribute-id
是否为 "test1 and test2",如果不同则将值设置为空。
我的输入 Xml 如下所示
<?xml version="1.0" encoding="UTF-8"?>
<elements>
<element>
<id>123</id>
<items>
<item>
<attributes>
<attribute attribute-id="test1">attr1</attribute>
<attribute attribute-id="test2">attr2</attribute>
</attributes>
</item>
</items>
</element>
</elements>
我尝试使用以下 Dataweave 脚本:
%dw 1.0
%output application/xml
---
{
elements: { (payload.elements.*element map {
element: {
test1 : $.items.item.attributes.attribute when $.items.item.attributes.attribute.@attribute-id == 'test1' otherwise '',
test2 : $.items.item.attributes.attribute when $.items.item.attributes.attribute.@attribute-id == 'test2' otherwise ''
}
}
)
}
}
预期输出:
<?xml version='1.0' encoding='windows-1252'?>
<elements>
<element>
<test1>attr1</test1>
<test2>attr2</test2>
</element>
</elements>
实际输出:
<?xml version='1.0' encoding='windows-1252'?>
<elements>
<element>
<test1>attr1</test1>
<test2></test2>
</element>
</elements>
我的数据编织脚本需要进行哪些更改才能获得预期的输出?
试试这个
%dw 1.0
%output application/xml
---
{
elements: { (payload.elements.*element map {
element: {($.items.item.attributes.*attribute map {
($.@attribute-id) : $
})}
}
)
}
你的不工作,因为有多个 items.item.attributes.attribute
希望对您有所帮助。
检查下面的脚本
%dw 1.0
%output application/xml
---
{
elements: {
(payload.elements.*element map {
element: {
($.items.item.attributes.*attribute map ((element, index) -> {
(element.@attribute-id) : element when element.@attribute-id == "test1" or element.@attribute-id == "test2"
otherwise ''
}))
}
}
)
}
}
它检查 attribute-id
是否为 "test1 and test2",如果不同则将值设置为空。