我有一个像这样的有效载荷,
<Payload>
<Identifier>
<Type>typeA</Type>
<Value>valueOfA</Value>
</Identifier>
<Identifier>
<Type>typeB</Type>
<Value>valueOfB</Value>
</Identifier>
</Payload>
我想使用xpath或xquery提取元素'typeA'的值以继续进行,以便我的转换后的有效负载看起来像这样
<transformedPayload>
<typeA>valueOfA</typeA>
<typeB><valueOfB</typeB>
</transformedPayload>
请帮忙。 提前谢谢。
答案 0 :(得分:2)
这在XQuery中非常容易实现。以下查询执行您想要的操作:
<transformedPayload>{
for $ident in /Payload/Identifier
return element { $ident/Type } { $ident/Value/text() }
}</transformedPayload>
如果您只想选择所有Identifier
的子集,可以使用where
子句:
<transformedPayload>{
for $ident in /Payload/Identifier
where $ident/Type eq 'typeA'
or $ident/Type eq 'typeB'
return element { $ident/Type } { $ident/Value/text() }
}</transformedPayload>
您还可以使用=
运算符及其存在语义来使其更紧凑:
<transformedPayload>{
for $ident in /Payload/Identifier
where $ident/Type = ('typeA', 'typeB')
return element { $ident/Type } { $ident/Value/text() }
}</transformedPayload>