【问题标题】:Extract data from xml in c# getting NullReference在c#中从xml中提取数据获取NullReference
【发布时间】:2015-06-18 13:53:44
【问题描述】:

我目前正在从我得到的 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# extracting data from XML

请帮助我进一步理解它, br

【问题讨论】:

标签: c# xml linq-to-xml


【解决方案1】:

尝试使用

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

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

【讨论】:

  • 能否请您 edit 解释为什么这段代码回答了这个问题?纯代码答案是discouraged,因为它们不教授解决方案。 (该帖子至少被一位用户标记,大概是因为他们认为应该删除没有解释的答案。)
【解决方案2】:

解决方法很简单。

如果您要拆分语句,例如

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

你会看到,NPE 是被抛出的

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

如果您在调试模式下查看“root”包含的内容。你会看到,'root' 是'null'。所以没有元素'GeoCodeResponse'。 它应该像“GeocodeResponse”一样命名,你的解决方案是有效的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    相关资源
    最近更新 更多