Xpath-запрос в C # бросая исключение - PullRequest
0 голосов
/ 20 сентября 2009

Я пытаюсь извлечь информацию из следующего xml: ezb

XmlDocument doc = new XmlDocument();
doc.Load("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");
var x = doc.SelectSingleNode("//@time");
labelDate.Text= "Data From: " + x.Value;

работает просто отлично! что не работает, однако, насколько я могу судить, правильный синтаксис xpath:

var z = doc.SelectSingleNode("//Cube[@currency='JPY']/@rate");
labelResult.Text = z.Value;

Я получаю исключение: "ссылка на объект не установлена ​​для экземпляра объекта". Насколько я могу судить, я не получаю никаких данных из своего запроса, что странно, так как я уверен, что это правильно. Я ценю любую помощь!

1 Ответ

0 голосов
/ 20 сентября 2009

Вам не хватает того факта, что у XML-файла есть пространства имен. Вот как вы можете включить их в свой запрос:

XmlDocument doc = new XmlDocument();

doc.Load("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");

XmlNamespaceManager xmlnsManager = new XmlNamespaceManager(doc.NameTable);
xmlnsManager.AddNamespace("gesmes", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref");

var z = doc.SelectSingleNode("//gesmes:Cube[@currency='JPY']/@rate", xmlnsManager);

Ваш первый запрос работает, поскольку пространства имен не применяются к атрибутам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...