Soap 本体内にさまざまなネストされたノードを含む Soap メッセージがあります。ノード「xyz」を見つける必要がありますが、常に同じ場所にあるとは限りません。XSLT の世界では、//xyz[1] を使用できます。esql に相当する構文はありますか? OutputRoot.SOAP.Body{不明な構文}.xyz[1] のようなもの
質問する
5699 次
3 に答える
2
ESQL の xpath '//' 構文に相当するものはないと思います。値にアクセスするためにそれを使用する必要がある場合は、JavaCompute ノードを使用できます (evaluateXpath を参照)。または、ESQL で再帰関数を作成して、すべてのノードにアクセスし、名前をテストすることもできます。例については、Infocenter の CREATE FUNCTION の記事を参照してください。
于 2014-04-17T22:38:23.290 に答える
1
階層的に常に同じレベルにある場合は、匿名参照を使用できます。
次のコードを使用して、XML の Xyz 値を取得しました。
-- Walk all the second level aggregates looking for any that contain the Xyz tag
DECLARE AnonRef REFERENCE TO InputRoot.XMLNSC.*:HasAggregatesWithXyz.*:*[1];
WHILE(LASTMOVE(AnonRef)) DO
DECLARE XyzRef REFERENCE TO AnonRef.*:Xyz[1];
IF(LASTMOVE(XyzRef)) THEN
-- Do something with the value of Xyz
DECLARE CharVal CHAR FIELDVALUE(XyzRef);
END IF;
MOVE AnonRef NEXTSIBLING;
END WHILE;
<HasAggregatesWithXyz>
<Agg1><NotXyz>NotNot</NotXyz></Agg1>
<Agg2><Xyz>XyzValue1</Xyz></Agg2>
<Agg3><NotXyz>NotNot</NotXyz></Agg3>
<Agg4><Xyz>XyzValue2</Xyz></Agg4>
</HasAggregatesWithXyz>
注: 選択した XMLNSC 解析オプション、特に空白の保持に関係するものによっては、参照をより具体的にしたい場合があります。そのために、次のように型を使用できます。
DECLARE AnonRef REFERENCE TO InputRoot.XMLNSC.*:HasAggregatesWithXyz.(XMLNSC.Folder)*:*[1];
....
MOVE AnonRef NEXTSIBLING REPEAT TYPE;
于 2014-05-02T04:47:32.203 に答える