Существует пространство имен по умолчанию http://www.ecb.int/vocabulary/2002-08-01/eurofxref
, которое необходимо будет зарегистрировать для доступа к элементу Cube
.
В противном случае выражение XPath пытается найти элемент с номером Cube
, который не существует в документе. XPath не имеет понятия пространства имен по умолчанию.
string url = @"http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(url);
XmlNamespaceManager manager = new XmlNamespaceManager(xmlDoc.NameTable);
manager.AddNamespace("gesmes", "http://www.gesmes.org/xml/2002-08-01");
manager.AddNamespace("default", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref");
XmlNodeList nodes = xmlDoc.SelectNodes("/gesmes:Envelope/default:Cube", manager);
это будет иметь доступ к Cube
ребенка непосредственно под gesmes:Envelope
. В зависимости от того, что вы хотите достичь, вы можете использовать одно из следующих выражений XPath:
/gesmes:Envelope/default:Cube/default:Cube/default:Cube
/gesmes:Envelope//default:Cube[@currency]
/gesmes:Envelope//default:Cube[@time]/default:Cube