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