Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从xml-c检索值#_C#_.net - Fatal编程技术网

C# 从xml-c检索值#

C# 从xml-c检索值#,c#,.net,C#,.net,我有来自API的以下xml文件 <IPInformation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://ws.cdyne.com/"> <City>xxxxxx</City> <StateProvince>12</StateProvince> <Co

我有来自API的以下xml文件

<IPInformation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://ws.cdyne.com/">
<City>xxxxxx</City>
<StateProvince>12</StateProvince>
<Country>xxxxxx</Country>
<Organization/>
<Latitude>13.0833</Latitude>
<Longitude>80.28329</Longitude>
<AreaCode>0</AreaCode>
<TimeZone/>
<HasDaylightSavings>false</HasDaylightSavings>
<Certainty>90</Certainty>
<RegionName/>
<CountryCode>xx</CountryCode>
</IPInformation>
我总是得到
Null
,而不是
13.0833
80.28329

谁能告诉我如何从上面的xml中检索
纬度
经度


谢谢

您的问题是名称空间。我将您的XML复制到
a.XML
和以下作品(LINQpad):

印刷品

<Longitude xmlns="http://ws.cdyne.com/">80.28329</Longitude>
80.28329

首先,您的xml中有两个xmlns属性声明—如果您删除
xmlns=”http://ws.cdyne.com/“
并将查询更改为
/ipinfo/Latitude
,返回有效的XMLNode。

将其反序列化为IPInformation类型的对象。”。。使用面向对象的方式..好的观点;然而,它并没有解释为什么curren方法不能像预期的那样工作。变量
纬度
经度
的类型是什么?方法
SelectSingleNode
不解析所选节点的内容;它的返回类型是
XmlNode
,必须进一步处理才能实现解析。只需简单阅读,但这可能会有所帮助:@Codor--但是
SelectSingleNode
调用返回null…不,没有两个xmlns属性。
xmlns
是默认命名空间。在生成应用程序“error”System.Xml.XmlNode“不包含“Dump”的定义,并且找不到接受类型为“System.Xml.XmlNode”的第一个参数的扩展方法“Dump”(是否缺少using指令或程序集引用?)
Dump
是一个LINQPad命令。尝试运行
Console.WriteLine(x.DocumentElement.SelectSingleNode(//x:Longitude,ns))
Console.WriteLine(x.DocumentElement.SelectSingleNode(//x:Longitude,ns).InnerText)
xmlDoc.DocumentElement.SelectSingleNode(//x:经度),ns.InnerXml.ToString();-为我工作。
void Main()
{
    var a = @"c:\temp\a\a.xml";
    XmlDocument x = new XmlDocument();
    x.Load(a);

    var ns = new XmlNamespaceManager(x.NameTable);
    ns.AddNamespace("x", x.DocumentElement.NamespaceURI);
    x.DocumentElement.SelectSingleNode("//x:Longitude", ns).Dump();

}
<Longitude xmlns="http://ws.cdyne.com/">80.28329</Longitude>