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);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我单击按钮时,会显示一个空文本框.假设显示IP地址.XML响应看起来像这样..
<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>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
是.Ip是一个元素,你正试图读它,好像它是和属性:
reader.MoveToFirstAttribute();
Run Code Online (Sandbox Code Playgroud)
我建议切换到LINQ to XML:
string geoipxml = (wc.DownloadString("http://freegeoip.net/xml/" + geoip));
var xDoc = XDocument.Parse(geoipxml);
string geoipanswer = (string)xDoc.Root.Element("Ip");
MessageBox.Show(geoipanswer);
Run Code Online (Sandbox Code Playgroud)
你需要using System.Xml.Linq让它工作.