2016-05-27 5 views
-1

Как анализировать XML-файл с помощью идентификатора узла. Я хочу, чтобы добраться до <Rate>0.8988</Rate> узла <rate id="USDEUR">Анализ XmlDocument с использованием идентификатора узла в C#

<results> 
    <rate id="USDEUR"> 
    <Name>USD/EUR</Name> 
    <Rate>0.8988</Rate> 
    <Date>5/27/2016</Date> 
    <Time>6:56pm</Time> 
    <Ask>0.8989</Ask> 
    <Bid>0.8988</Bid> 
    </rate> 
    <rate id="USDJPY"> 
    <Name>USD/JPY</Name> 
    <Rate>110.1250</Rate> 
    <Date>5/27/2016</Date> 
    <Time>6:53pm</Time> 
    <Ask>110.1500</Ask> 
    <Bid>110.1250</Bid> 
    </rate> 
    </results> 

Это то, что я могу сделать до сих пор.

string sitemapurl = @"http://example.com/xmlforexrates"; 
XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load(sitemapurl); 
XmlNodeList nodeIds = xmlDoc.SelectNodes("/results/rate"); 

Сейчас это становится все <rate> узлы в NodeList. Я просто хотел получить узел только на Id, но только <rate id="USDEUR">

Пожалуйста, помогите мне сделать это. Благодаря

+2

Я думаю, что вы это перевернули. Сначала вам нужно написать код. Если это не сработает, вы разместите здесь свой код и зададите конкретный вопрос об этом, чтобы получить помощь. – sstan

+0

только что обновил мой вопрос, пожалуйста, удалите отрицательную маркировку. Спасибо –

+1

http://stackoverflow.com/questions/19786770/how-can-i-get-a-node-by-id-in-xml –

ответ

0

Использование XPath, вы можете сделать это следующим образом:

XmlNodeList nodeIds = xmlDoc.SelectNodes("/results/rate[@id='USDEUR']/Rate/text()"); 
0

Это довольно тривиально с помощью LINQ к XML.

var doc = XDocument.Load("http://example.com/xmlforexrates"); 

var rate = (decimal)doc 
    .Descendants("rate") 
    .Where(x => (string) x.Attribute("id") == "USDEUR") 
    .Elements("Rate") 
    .Single(); 

См. this fiddle для рабочей демонстрации.

Смежные вопросы