2013-11-01 2 views
1
 private void nsButton3_Click(object sender, EventArgs e) 
    { 
     string geoip = nsTextBox4.Text; 
     WebClient wc = new WebClient(); 
     string geoipxml = (wc.DownloadString("http://freegeoip.net/xml/" + geoip)); 
     StringBuilder output = new StringBuilder(); 
     using (XmlReader reader = XmlReader.Create(new StringReader(geoipxml))) 
     { 
      reader.ReadToFollowing("Response"); 
      reader.MoveToFirstAttribute(); 
      string geoipanswer = reader.Value; 
      MessageBox.Show(geoipanswer); 
     } 
    } 
} 
} 

문제는 내가 단추를 클릭하면 빈 텍스트 상자가 표시됩니다. IP 주소가 표시됩니다. XML 응답은 다음과 같습니다.XML 구문 분석 C# 문제

<Response> 
<Ip>69.242.21.115</Ip> 
<CountryCode>US</CountryCode> 
<CountryName>United States</CountryName> 
<RegionCode>DE</RegionCode> 
<RegionName>Delaware</RegionName> 
<City>Wilmington</City> 
<ZipCode>19805</ZipCode> 
<Latitude>39.7472</Latitude> 
<Longitude>-75.5918</Longitude> 
<MetroCode>504</MetroCode> 
<AreaCode>302</AreaCode> 
</Response> 

아이디어가 있으십니까?

답변

5

예.

string geoipxml = (wc.DownloadString("http://freegeoip.net/xml/" + geoip)); 
var xDoc = XDocument.Parse(geoipxml); 
string geoipanswer = (string)xDoc.Root.Element("Ip"); 
MessageBox.Show(geoipanswer); 

당신은에 using System.Xml.Linq가 필요합니다

reader.MoveToFirstAttribute(); 

내가 XML에 LINQ로 전환하는 조언을 것입니다 : 그것이 및 속성처럼 Ip은 요소이고, 당신은 그것을 읽으려고하고 있습니다 작동하게 만들다.