XDocument - 查找特定节点的值

时间:2012-06-28 02:34:50

标签: linq-to-xml

我在使用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做同样的事情。我一直在寻找整个晚上,但没有什么对我有用。请指出我正确的方向。谢谢!

1 个答案:

答案 0 :(得分: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以获取更多信息。