1

我在使用 XDocument 时遇到问题。我需要的是在这个xml中获取一个名为“LocalityName”的节点的值:http ://maps.google.com/maps/geo?q=59.4344,24.3342&output=xml&sensor=false

我使用 XmlDocument 完成了这项工作:

        XmlDocument doc = new XmlDocument();
        doc.Load("http://maps.google.com/maps/geo?q=54.9133,23.9001&output=xml&sensor=false");

        XmlNodeList myElement = doc.GetElementsByTagName("Locality");
        foreach (XmlNode node in myElement)
        {
            XmlElement myElement = (XmlElement)node;
            string varN = myElement.GetElementsByTagName("LocalityName")[0].InnerText;

不知道这是否是最好的方法,但它确实有效。现在我需要对 XDocument 做同样的事情。我一直在寻找整个晚上,但没有什么对我有用。请指出我正确的方向。谢谢!

4

1 回答 1

4

这里有两种使用 XDocument 的方法:

    XDocument doc = XDocument.Load("http://maps.google.com/maps/geo?q=54.9133,23.9001&output=xml&sensor=false");

    var localityName = doc.Descendants(XName.Get("LocalityName", @"urn:oasis:names:tc:ciq:xsdschema:xAL:2.0")).First().Value;

    var localityName2 = (from d in doc.Descendants()
                         where d.Name.LocalName == "LocalityName"
                         select d.Value).First();

第一种方法 (localityName) 假设您知道命名空间,请参阅https://stackoverflow.com/a/6209890/1207991了解更多信息。

第二种方法 (localityName2) 不需要命名空间,请参阅https://stackoverflow.com/a/2611152/1207991了解更多信息。

于 2012-06-28T05:30:47.770 回答