从 c# 中的 xml 中提取数据,获取 NullReference

本文关键字:数据 获取 NullReference 提取 中的 xml | 更新日期: 2023-09-27 17:56:54

我目前正在迈出从我得到的XML中提取数据的第一步,以下链接提供了我得到的响应:http://maps.google.com/maps/api/geocode/xml?address=AT,%20Wien

现在我尝试获取第一个元素的纬度和对数:

 string serviceUri = string.Format("http://maps.google.com/maps/api/geocode/xml?address=AT,", location);
        XmlDocument doc = new XmlDocument();
        XDocument X = XDocument.Load(serviceUri);
        var position = X.Element("GeoCodeResponse").Element("result");
        var position1= position.Element("geometry").Element("location");
        string latitude = position1.Element("lat").Value;
        string longitude = position1.Element("lng").Value;

但似乎我误解了这个问题的一些东西,这个问题在这里也得到了回答:C# 从 XML 中提取数据

请帮我进一步理解它,BR

从 c# 中的 xml 中提取数据,获取 NullReference

尝试使用

var position = X.Root.Element("result");

如果在 Visual Studio 中调试代码,您将看到 X.Element("GeoCodeResponse") 返回 null。并且您正在尝试在空上使用X.Element("")。您还可以在访问根节点之前检查 null。

解决方案很简单。

如果您要拆分语句,例如

var root = X.Element("GeoCodeResponse");
var position = root.Element("result");

你会看到,NPE 是由

var position = root.Element("result");

如果您在调试模式下查看"root"包含的内容。你会看到,"根"是"空"。所以没有元素"GeoCodeResponse"。它应该像"地理编码响应"一样命名,并且您的解决方案有效。