Google Maps API ジオコード サービスから XML 出力を読み取り、LINQ to XML を使用して文字列を解析する小さなプログラムを作成しました。
返された XML に非 ASCII 文字が含まれている場合、出力が壊れているようです。これを別の方法で読み取り/エンコードする方法はありますか?
コードの主要部分のスナップショットを次に示します。
public static void Read(IList<string> LocationDetails, string Type)
{
using (WebClient webClient = new WebClient())
{
webClient.Proxy = null;
for(int i = 0; i < 5; i++)
{
//Generate geocode request and read XML file to string
string request = String.Format("Https://maps.google.com/maps/api/geocode/xml?{0}={1}&sensor=false", Type, LocationDetails[i]);
string locationXML = webClient.DownloadString(request);
XElement root = XElement.Parse(locationXML);
//Check if request is OK or otherwise
if (root.Element("status").Value != "OK")
{ //Skip to next iteration if status not OK
continue;
}
}
..... いくつかの宣言コードをスキップします。StateName が文字列として宣言されました。
try
{
StateName = (result.Elements("address_component")
.Where(x => (string)x.Element("type") == "administrative_area_level_1")
.Select(x => x.Element("long_name").Value).First());
}
catch (InvalidOperationException e)
{
StateName = null;
}