HANA Cloud Integration を使用して統合フロー (iFlow) を構築しています。ただし、XML の経験があれば誰でも役立つ可能性があります。
私は、openweathermap API と対話し、「天気」データを取り込み、特定のデータ ポイントを電子メールで送信する、非常に単純な統合フローを構築しました。これは、私が以下で作業している XML です。
<current>
<city id="5913490" name="Calgary">
<coord lon="-114.09" lat="51.05"/>
<country>CA</country>
<sun rise="2016-02-22T14:34:54" set="2016-02-23T01:05:30"/>
</city>
<temperature value="262.098" min="262.098" max="262.098" unit="kelvin"/>
<humidity value="79" unit="%"/>
<pressure value="865.62" unit="hPa"/>
<wind>
<speed value="1.32" name="Calm"/>
<gusts/>
<direction value="262.002" code="W" name="West"/>
</wind>
<clouds value="0" name="clear sky"/>
<visibility/>
<precipitation mode="no"/>
<weather number="800" value="clear sky" icon="01n"/>
<lastupdate value="2016-02-22T14:12:31"/>
</current>
このためweather
には、current
ルート要素の要素を抽出する必要があり、value
フィールドが使用されます。これは XPath 文字列によって形成されます/current/weather/@value
。最終更新フィールドも統合の次のプロセスに渡す必要があり、同じ方法で抽出できます。
currentConditions
およびという名前の文字列である 2 つのヘッダー プロパティを作成しました。currentReport
これらは XPath 属性/current/weather/@value
およびを指します/current/lastupdate/@value
。XPath では@
、要素ではなく属性を参照します。また、外部サービス呼び出しに渡せるように、これらのヘッダー値を作成することも忘れないでください。それらがプロパティである場合、それらは外部プロセスに送信されません。ただし、次のエラーが表示されます。
org.apache.camel.builder.xml.InvalidXPathExpression: 無効な xpath: /current/weather/@value。理由: javax.xml.xpath.XPathExpressionException: クラス javax.xml.transform.sax.SAXSource のノードの変換に失敗しました: org.xml.sax.SAXParseException; 行番号: 1; 列番号: 1; プロローグではコンテンツは許可されません。原因: javax.xml.xpath.XPathExpressionException: クラス javax.xml.transform.sax.SAXSource のノードの変換に失敗しました: org.xml.sax.SAXParseException; 行番号: 1; 列番号: 1; コンテンツはプロローグで許可されていません。
助言がありますか?