C# 在XML调用中不断获取null

C# 在XML调用中不断获取null,c#,xml,web-services,http,httpwebrequest,C#,Xml,Web Services,Http,Httpwebrequest,我试图从XML返回某些行 <geoip> <source>smart-ip.net</source> <host>68.9.63.33</host> <lang>en</lang> <countryName>United States</countryName> <countryCode>US</countryCode>

我试图从XML返回某些行

<geoip>
    <source>smart-ip.net</source>
    <host>68.9.63.33</host>
    <lang>en</lang>
    <countryName>United States</countryName>
    <countryCode>US</countryCode>
    <city>West Greenwich</city>
    <region>Rhode Island</region>
    <latitude>41.6298</latitude>
    <longitude>-71.6677</longitude>
    <timezone>America/New_York</timezone>
</geoip>

使用
SelectSingleNode
搜索的XML不包含与参数匹配的路径。该函数的默认返回值为null-因此,当未找到路径时,将返回
null

另外,当我尝试访问您指定的网页时,我收到一个服务器错误。我建议您至少检查一下以确保
xml
变量包含内容

(编辑)


查看XML后,我注意到您正在对返回的单个节点调用
Value
。您不需要该值,您需要的是
InnerText
属性-在那里可以找到您要查找的值。

您正在使用
SelectSingleNode
搜索的XML不包含与您的参数匹配的路径。该函数的默认返回值为null-因此,当未找到路径时,将返回
null

另外,当我尝试访问您指定的网页时,我收到一个服务器错误。我建议您至少检查一下以确保
xml
变量包含内容

(编辑)


查看XML后,我注意到您正在对返回的单个节点调用
Value
。您不需要该值,而是需要
InnerText
属性-在那里可以找到您要查找的值。

除了按照Jon的正确建议使用
InnerText
之外,请尝试:

var name = doc.DocumentElement.SelectSingleNode("countryName").InnerText;
我认为您的问题在于,
doc.DocumentElement
已经是
geoip
XML元素,所以您只需要获取它的
countryName
子元素

或者:

var name = doc.SelectSingleNode("//geoip/countryName").InnerText;

除了使用Jon正确建议的
InnerText
之外,请尝试:

var name = doc.DocumentElement.SelectSingleNode("countryName").InnerText;
我认为您的问题在于,
doc.DocumentElement
已经是
geoip
XML元素,所以您只需要获取它的
countryName
子元素

或者:

var name = doc.SelectSingleNode("//geoip/countryName").InnerText;

我是web服务新手,所以我在尝试让它工作时遇到了困难。xml调用的正确路径是什么?如果看不到网站返回的xml,我就无能为力。XPath查询要求您非常熟悉您正在访问的确切路径。目前,我在一个代理服务器后面,该代理服务器可能正在过滤我的web请求-当我尝试访问该站点时,我收到一个内部服务器错误。如果可能的话,您可以在问题中发布XML吗?我是web服务新手,所以在尝试让它工作时遇到了困难。xml调用的正确路径是什么?如果看不到网站返回的xml,我就无能为力。XPath查询要求您非常熟悉您正在访问的确切路径。目前,我在一个代理服务器后面,该代理服务器可能正在过滤我的web请求-当我尝试访问该站点时,我收到一个内部服务器错误。如果可能的话,你能在问题中发布XML吗?嗯,我试过了,但是当我点击submit时还是没有得到任何东西。它说调试中仍然为空。嗯,我尝试了这个,但当我点击提交时仍然没有得到任何结果。它表示调试中仍存在null