xml ファイルの結果をフィルタリングしようとしています。フィルタリングを依頼されたフィールドの 1 つは、各ノードの属性 price です。問題は、xml がスペイン語のソースからのものであり、価格の小数点記号が ではなく であることです。桁区切り記号は ではなく です。
指定された価格よりも低い価格のノードのみが表示される、フィルタリングされた xml ファイルを取得しようとしています。
XML 構造は次のとおりです。
<RoomStays>
<RoomStay InfoSource="" Price="201,60" Discount="0" MealPlan="Sólo alojamiento" MealPlanId="1" Provider="Marsol" ProviderId="3" HotelName="HOTEL LA ESTACION" Rating="" Latitud="" Longitud="">
<RoomStay InfoSource="" Price="1.234,75" Discount="0" MealPlan="Sólo alojamiento" MealPlanId="1" Provider="Marsol" ProviderId="3" HotelName="HOTEL LA ESTACION" Rating="" Latitud="" Longitud="">
....More nodes
</RoomStays>
XPath と Linq2Xml を使用してフィルター処理を試みました。を に置き換えなければならないという結論に達しました。と 。で、しかし、結果は0です。
のみがある 1000 未満の値では、次を使用して取得しました。
doc.XPathSelectElements(./RoomStays/RoomStay[translate(@Price,',','.')<=256.78])
ただし、1000 を超える価格がある場合は、千単位の区切り記号を使用します。うまくいかないので、私は試しました:
doc.XPathSelectElements(./RoomStays/RoomStay[translate(translate(@Price,'.',''),',','.')<=256.78])
しかし、それは0の結果を返します(翻訳の代わりにreplace関数を使用して.文字を削除しようとしましたが、例外が発生しました)。
これを取得する別の方法がある場合でも、誰かが私を助けることができれば、私は立ち往生しています(必ずしもXPathではありません)。
前もって感謝します。