2016-08-15 13 views
1

私はAndroidでユーザーアドレスを取得するためにGoogle APIジオコードを使用しています。繰り返しタグへの部分文字列オフセットを操作する方法

私が得る応答のようなものです:

<GeocodeResponse> 
<status>OK</status> 
<result> 
<type>street_address</type> 
<formatted_address> 
R. Dante Marobi, 142 - Colina Verde, Mococa - SP, Brasil 
</formatted_address> 
<address_component> 
<long_name>142</long_name> 
<short_name>142</short_name> 
<type>street_number</type> 
</address_component> 
<address_component> 
<long_name>Rua Dante Marobi</long_name> 
<short_name>R. Dante Marobi</short_name> 
<type>route</type> 
</address_component> 
<address_component> 
<long_name>Colina Verde</long_name> 
<short_name>Colina Verde</short_name> 
<type>political</type> 
<type>sublocality</type> 
<type>sublocality_level_1</type> 
</address_component> 
<address_component> 
<long_name>Mococa</long_name> 
<short_name>Mococa</short_name> 
<type>locality</type> 
<type>political</type> 
</address_component> 
<address_component> 
<long_name>Mococa</long_name> 
<short_name>Mococa</short_name> 
<type>administrative_area_level_2</type> 
<type>political</type> 
</address_component> 
<address_component> 
<long_name>São Paulo</long_name> 
<short_name>SP</short_name> 
<type>administrative_area_level_1</type> 
<type>political</type> 
</address_component> 

私は文字列に唯一の都市名

<type> locality 

を得るために、このような構造を使用していますが、私は知りません文字列を操作してそこに到達する方法。

私はこのように、そうするように教えてチュートリアルを見つけた:

String cidade = resposta.substring(resposta.indexOf("<formatted_adress>") + 19, resposta.indexOf("</formatted_adress>")); 

事はある、私はformatted_address一部を望んでいない、私はadress_componentをしたいが、多くのaddress_componentタグがあり、Iオフセットを市の名前を参照するものにする方法を知らない。

どうすればよいですか?

ありがとうございました。

+0

XMLテキストを処理する最も良い方法は、XMLパーサーを使用することです。 [StAX](https://docs.oracle.com/javase/tutorial/jaxp/stax/index.html)。 – Andreas

答えて

0

私はあなたがあなたの街の名前は、「地域」のブロックに常にあり、それが一意であることを知っている...フォーマットは常に同じになります

を仮定します。

String[] stuffsplit = stuff.split("<type>locality"); 
String firstHalf = stuffsplit[0]; // keep everything before that 

// now look for the short_name tags at the end of this 
int start = firstHalf.lastIndexOf("<short_name>") + "<short_name>".length(); 
int end = firstHalf.lastIndexOf("</short_name>"); 
String name = firstHalf.substring(start, end); 

あなたが好きな場合は、long_nameためshort_nameを切り替えることができます。

+0

ありがとうございました!魅力的な作品! –

関連する問題