如何将url xml响应中的值赋给visual studio中的变量?

时间:2017-03-13 10:41:13

标签: c# xml xmlhttprequest

我有一段代码可以查看网址" https://freegeoip.net/xml/"并创建一个XML文档。该URL中的xml如下所示:

<Response>
    <IP>111.11.1.111</IP>
    <CountryCode>GB</CountryCode>
    <CountryName>United Kingdom</CountryName>
    <RegionCode>ENG</RegionCode>
    <RegionName>England</RegionName>
    <City></City>
    <ZipCode></ZipCode>
    <TimeZone>Europe/London</TimeZone>
    <Latitude>22</Latitude>
    <Longitude>0.9</Longitude>
    <MetroCode>0</MetroCode>
</Response>

我可以看到有一个InnXML和一个具有字段和值的OuterXML。

string url = @"https://freegeoip.net/xml/";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(url);

我想将此XML Document的某些字段分配给变量,例如: -RegionName -市 -纬度 -Longitude

1 个答案:

答案 0 :(得分:1)

一种选择是使用SelectSingleNode

获取特定属性
XmlNode node = xmlDoc .SelectSingleNode("//Response//RegionName");
var regionName = node.InnerText;

另一个是将xml反序列化为object:

XmlSerializer serializer = new XmlSerializer(typeof(Response));
var stringReader = new StringReader(thexml);
Response response = (Response)serializer.Deserialize(stringReader);


public class Response
{
    public string IP { get; set; }
    public string CountryCode { get; set; }
    public string CountryName { get; set; }
    public string RegionCode { get; set; }
    public string RegionName { get; set; }
    public string City { get; set; }
    public string ZipCode { get; set; }
    public string TimeZone { get; set; }
    public string Latitude { get; set; }
    public string Longitude { get; set; }
    public string MetroCode { get; set; }
}

现在,您已经在response变量中拥有了所需的一切。

<强>更新

从网址获取xml:

XmlTextReader reader = new XmlTextReader (URLString);
Response response = (Response)serializer.Deserialize(reader);