C# 从xml-c检索值#
我有来自API的以下xml文件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
<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>