0

基本的に、私はたくさん取りたいです:

<Cube currency="USD" rate="1.2954"/>

そして、それらを次の形式のハッシュマップに入れます。

String USD, String 1.2954

私は次のコードを持っています:

Map<String, String> list = new HashMap<String, String>();
Pattern p = Pattern.compile("<Cube\\scurrency='(.*)'\\srate='(.*)'/>");
Matcher matcher = p.matcher(currency_source);
while (matcher.find()) {
    list.put(matcher.group(1)); // PROBLEMATIC
}

ハッシュマップに通貨とレートを適切に追加する方法がわかりません。

4

2 に答える 2

3

(正規表現を使用して XML を解析しようとしているようです。代わりに XML パーサーを使用することを検討する必要があります。たとえば、Java で XML を解析する簡単な方法はありますか? )

(.*)まず、貪欲すぎるため、正規表現が間違っています。次のように変更します。

Pattern p = Pattern.compile("<Cube\\scurrency='([^']*)'\\srate='([^']*)'/>");

'一致しないようにします。次に、この.put()メソッドは 2 つの引数でキーと値を受け取るだけです。したがって、次のように使用できます。

list.put(matcher.group(1), matcher.group(2));
于 2012-09-21T14:28:45.603 に答える
1

またはMapHashMapキーと値のペアモデルで機能します。通貨がキーであると思われるキーと値のペアを追加し、値を次のように評価する場合は、次のようにします。

map.put("$", matcher.group(1));

編集:

正規表現を改善して、最初のグループが通貨の種類で、2 番目のグループが通貨の値である 2 つの異なるグループを提供して、それをマップに入れるようにしてください。

map.put(matcher.group(1), matcher.group(2));

正規表現の生成にはTX2REを使用し、それを使用して正しい正規表現を生成します。

于 2012-09-21T14:27:41.033 に答える