郵便番号APIを叩き、返ってきたレスポンス結果を、WPFに表示させたい(ListBox)
実行フロー
- Windowsアプリケーションから郵便番号を入力し、ボタンを押下
- ExportXml7Asyncの引数に郵便番号を渡し呼び出される。
---期待するフロー ↓
- xmlListsで取得した要素をListBoxに表示させる。
レスポンスXML情報
XML
1<response> 2<status>OK</status> 3<results> 4<method>address</method> 5<type>xml</type> 6<count>1</count> 7<address> 8<zipcode>6356322</zipcode> // 表示 9<ken_id>27</ken_id> // 表示 10<ken>山口県</ken> // 表示 11<address1>山田市</address1> // 表示 12<address2>大中南町</address2> // 表示 13<ken_kana>ナラケン</ken_kana> 14<address1_kana>ヤマトタカダシ</address1_kana> 15<address2_kana>オオナカミナミチョウ</address2_kana> 16</address> 17</results> 18</response>
C#
1 public async Task ExportXml7Async(int number) 2 { 3 using (var client = new HttpClient()) 4 { 5 // リスト初期化 6 testList.Items.Clear(); 7 // APIを叩く 8 var result1 = await client.GetStringAsync(string.Format(@"http://groovelab.asia/zipcode/address.xml?zipcode={0}", number)); // GET 9 var xmlList = XElement.Parse(result1); 10 // 必要な要素だけを取り出す オブジェクト生成 11 var selectXmlList = xmlList.Elements().Select(x => new 12 { 13 Zipcode = (int)x.Element("zipcode"), 14 KenId = (int)x.Element("ken_id"), 15 Ken = (string)x.Element("ken"), 16 Address = (string)x.Element("address"), 17 Address2 = (string)x.Element("address2") 18 }); 19 20 // ListBoxに表示 21 foreach (var xmldata in selectXmlList) // error? 22 { 23 testList.Items.Add(xmldata.Zipcode); 24 testList.Items.Add(xmldata.KenId); 25 testList.Items.Add(xmldata.Ken); 26 testList.Items.Add(xmldata.Address); 27 testList.Items.Add(xmldata.Address2); 28 } 29 } 30 }
簡単なご説明になりましたが、何卒宜しくお願い致します。
質問欄にある「6356322」って実在します?検索すると0件になったのですが・・・。
http://groovelab.asia/zipcode/address.xml?zipcode=6356322
あ、申し訳ありません、
既存コードに私の住所が乗ってたので、テラテイル側で適当な数値に差し替えました。
Descendantsメソッドを使うやり方でも実装出来ました。(参考までに)
takabosoft様のご回答の方が階層が明確になっており分かりやすいと思います。
```
var selectXmlList = xmlList.Descendants("address").Select(x => new
{
Zipcode = (int)x.Element("zipcode"),
KenId = (int)x.Element("ken_id"),
Ken = (string)x.Element("ken"),
Address = (string)x.Element("address"),
Address2 = (string)x.Element("address2")
});
```
回答1件
あなたの回答
tips
プレビュー