回答編集履歴

2

サンプルコード追加&その時の貼り付け場所訂正

2016/10/11 02:35

投稿

退会済みユーザー
test CHANGED
@@ -10,6 +10,16 @@
10
10
 
11
11
 
12
12
 
13
+ また、多分、以下の URL にあるような郵便番号から住所を調べるようなことがしたいのだと思いますが、であれば住所を表示するのに GridView を使うのが適当かどうかは考え直した方がよさそうな気がします。
14
+
15
+
16
+
17
+ http://postcode.goo.ne.jp/
18
+
19
+
20
+
21
+
22
+
13
23
  【2016/10/11 11:30 追記】
14
24
 
15
25
 
@@ -235,11 +245,3 @@
235
245
  </html>
236
246
 
237
247
  ```
238
-
239
-
240
-
241
- また、多分、以下の URL にあるような郵便番号から住所を調べるようなことがしたいのだと思いますが、であれば住所を表示するのに GridView を使うのが適当かどうかは考え直した方がよさそうな気がします。
242
-
243
-
244
-
245
- http://postcode.goo.ne.jp/

1

サンプルコード追加

2016/10/11 02:35

投稿

退会済みユーザー
test CHANGED
@@ -10,6 +10,234 @@
10
10
 
11
11
 
12
12
 
13
+ 【2016/10/11 11:30 追記】
14
+
15
+
16
+
17
+ 上に書いた「xml 文字列から XElement オブジェクトを作り・・・」のサンプルコードを貼っておきます。エラー処置そのものは省略しました。質問者さんの方で適切な方法を考えてください。
18
+
19
+
20
+
21
+ foreach のループ処置が力技的で何ですが、取りあえずのサンプルということで・・・
22
+
23
+
24
+
25
+ 代わりに Linq to XML とかを使うともっとスマートにできるかもしれません(興味がおありでしたら新たに別スレッドを立てて質問してください。ASP.NET ということでなく C# の分類にされるといいと思います)。
26
+
27
+
28
+
29
+ ```
30
+
31
+ <%@ Page Language="C#" %>
32
+
33
+ <%@ Import Namespace="System.IO" %>
34
+
35
+ <%@ Import Namespace="System.Xml.Linq" %>
36
+
37
+ <%@ Import Namespace="System.Xml.XPath" %>
38
+
39
+
40
+
41
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
42
+
43
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
44
+
45
+
46
+
47
+ <script runat="server">
48
+
49
+
50
+
51
+ string xmlString = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
52
+
53
+ <ZIP_result>
54
+
55
+ <result name=""ZipSearchXML"" />
56
+
57
+ <result version=""1.01"" />
58
+
59
+ <result request_url=""http%3A%2F%2Fzip.cgis.biz%2Fxml%2Fzip.php%3Fzn%3D1500013"" />
60
+
61
+ <result request_zip_num=""1500013"" />
62
+
63
+ <result request_zip_version=""none"" />
64
+
65
+ <result result_code=""1"" />
66
+
67
+ <result result_zip_num=""1500013"" />
68
+
69
+ <result result_zip_version=""0"" />
70
+
71
+ <result result_values_count=""1"" />
72
+
73
+ <ADDRESS_value>
74
+
75
+ <value state_kana=""トウキョウト"" />
76
+
77
+ <value city_kana=""シブヤク"" />
78
+
79
+ <value address_kana=""エビス(ツギノビルヲノゾク)"" />
80
+
81
+ <value company_kana=""none"" />
82
+
83
+ <value state=""東京都"" />
84
+
85
+ <value city=""渋谷区"" />
86
+
87
+ <value address=""恵比寿(次のビルを除く)"" />
88
+
89
+ <value company=""none"" />
90
+
91
+ </ADDRESS_value>
92
+
93
+ </ZIP_result>
94
+
95
+ ";
96
+
97
+
98
+
99
+ public class AddressValue
100
+
101
+ {
102
+
103
+ public string StateKana { get; set; }
104
+
105
+ public string CityKana { get; set; }
106
+
107
+ public string AddressKana { get; set; }
108
+
109
+ public string CompanyKana { get; set; }
110
+
111
+ public string State { get; set; }
112
+
113
+ public string City { get; set; }
114
+
115
+ public string Address { get; set; }
116
+
117
+ public string Company { get; set; }
118
+
119
+ }
120
+
121
+
122
+
123
+ protected void Page_Load(object sender, EventArgs e)
124
+
125
+ {
126
+
127
+ TextReader sr = new StringReader(xmlString);
128
+
129
+ XElement zipResult = XElement.Load(sr);
130
+
131
+ sr.Close();
132
+
133
+
134
+
135
+ if (zipResult.XPathSelectElement("result[@result_code='1']") == null)
136
+
137
+ {
138
+
139
+ // エラー処置
140
+
141
+ return;
142
+
143
+ }
144
+
145
+
146
+
147
+ List<AddressValue> list = new List<AddressValue>();
148
+
149
+
150
+
151
+ foreach (XElement address in zipResult.Elements("ADDRESS_value"))
152
+
153
+ {
154
+
155
+ AddressValue item = new AddressValue();
156
+
157
+
158
+
159
+ item.StateKana =
160
+
161
+ address.XPathSelectElement("value[@state_kana]").Attribute("state_kana").Value;
162
+
163
+ item.CityKana =
164
+
165
+ address.XPathSelectElement("value[@city_kana]").Attribute("city_kana").Value;
166
+
167
+ item.AddressKana =
168
+
169
+ address.XPathSelectElement("value[@address_kana]").Attribute("address_kana").Value;
170
+
171
+ item.CompanyKana =
172
+
173
+ address.XPathSelectElement("value[@company_kana]").Attribute("company_kana").Value;
174
+
175
+ item.State =
176
+
177
+ address.XPathSelectElement("value[@state]").Attribute("state").Value;
178
+
179
+ item.City =
180
+
181
+ address.XPathSelectElement("value[@city]").Attribute("city").Value;
182
+
183
+ item.Address =
184
+
185
+ address.XPathSelectElement("value[@address]").Attribute("address").Value;
186
+
187
+ item.Company =
188
+
189
+ address.XPathSelectElement("value[@company]").Attribute("company").Value;
190
+
191
+
192
+
193
+ list.Add(item);
194
+
195
+ }
196
+
197
+
198
+
199
+ GridView1.DataSource = list;
200
+
201
+ GridView1.DataBind();
202
+
203
+ }
204
+
205
+ </script>
206
+
207
+
208
+
209
+ <html xmlns="http://www.w3.org/1999/xhtml">
210
+
211
+ <head runat="server">
212
+
213
+ <title></title>
214
+
215
+ </head>
216
+
217
+ <body>
218
+
219
+ <form id="form1" runat="server">
220
+
221
+ <div>
222
+
223
+ <h1>郵便番号検索</h1>
224
+
225
+ <asp:GridView ID="GridView1" runat="server">
226
+
227
+ </asp:GridView>
228
+
229
+ </div>
230
+
231
+ </form>
232
+
233
+ </body>
234
+
235
+ </html>
236
+
237
+ ```
238
+
239
+
240
+
13
241
  また、多分、以下の URL にあるような郵便番号から住所を調べるようなことがしたいのだと思いますが、であれば住所を表示するのに GridView を使うのが適当かどうかは考え直した方がよさそうな気がします。
14
242
 
15
243