2017-03-29 21 views
2

私は私の変換ペイロードはこのxpathまたはxqueryを使用して親ノード内の兄弟要素に基づいて要素の値を抽出する方法は?

<transformedPayload> 
<typeA>valueOfA</typeA> 
<typeB><valueOfB</typeB> 
</transformedPayload> 

のように見えるように、さらに進行したXPathやXQueryを使用して、要素「タイプA」の値を抽出したいこのような、

<Payload> 
    <Identifier> 
    <Type>typeA</Type> 
    <Value>valueOfA</Value> 
    </Identifier> 
    <Identifier> 
    <Type>typeB</Type> 
    <Value>valueOfB</Value> 
    </Identifier> 
</Payload> 

ペイロードを持っています助けてください。 ありがとうございます。

答えて

2

これはXQueryで非常に簡単です。あなたはすべてのIdentifier秒のサブセットのみを選択したい場合は

<transformedPayload>{ 
    for $ident in /Payload/Identifier 
    return element { $ident/Type } { $ident/Value/text() } 
}</transformedPayload> 

は、あなたが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> 

ます。また=演算子を使用することができますし、そのexistantialセマンティクスこれはよりコンパクトにする:

<transformedPayload>{ 
    for $ident in /Payload/Identifier 
    where $ident/Type = ('typeA', 'typeB') 
    return element { $ident/Type } { $ident/Value/text() } 
}</transformedPayload> 
+0

おかげで、それが働きました。しかし、私はもう一つの疑いがあります。のは、Nそこ タイプA のような要素の数valueOfA TYPEB valueOfB タイプC があるとしましょうvalueOfC しかし、タイプAとタイプBのみを抽出する必要があります。どのようにすればいいですか? –

+0

あなたは上記のコメントを見てくださいできますか? –

+0

私はそのための例を追加しました。 –

関連する問題