首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在c#中读取xml

如何在c#中读取xml
EN

Stack Overflow用户
提问于 2013-02-15 04:05:48
回答 2查看 1.1K关注 0票数 0

无法在c#中读取此xml。如何从该xml中获取货币和汇率

我使用了下面的代码

代码语言:javascript
复制
XmlTextReader xmlTextReader = new XmlTextReader(new StringReader(xmlfile));
XmlDocument doc = new XmlDocument();
XmlNode node = doc.ReadNode(xmlTextReader);

但是没有得到这些值。

代码语言:javascript
复制
 <?xml version="1.0" encoding="UTF-8"?>
 <gesmes:Envelope xmlns:gesmes="http://www.gesmes.org/xml/2002-08-01" xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref">
<gesmes:subject>Reference rates</gesmes:subject>
<gesmes:Sender>
    <gesmes:name>European Central Bank</gesmes:name>
</gesmes:Sender>
<Cube>
    <Cube time='2013-02-14'>
        <Cube currency='USD' rate='1.3327'/>
        <Cube currency='JPY' rate='124.39'/>
        <Cube currency='BGN' rate='1.9558'/>
        <Cube currency='CZK' rate='25.383'/>
        <Cube currency='DKK' rate='7.4604'/>
        <Cube currency='GBP' rate='0.85940'/>
        <Cube currency='HUF' rate='292.52'/>
        <Cube currency='LTL' rate='3.4528'/>
        <Cube currency='LVL' rate='0.6997'/>
        <Cube currency='PLN' rate='4.1765'/>
        <Cube currency='RON' rate='4.3871'/>
        <Cube currency='SEK' rate='8.4492'/>
        <Cube currency='CHF' rate='1.2293'/>
        <Cube currency='NOK' rate='7.3605'/>
        <Cube currency='HRK' rate='7.5863'/>
        <Cube currency='RUB' rate='40.1712'/>
        <Cube currency='TRY' rate='2.3605'/>
        <Cube currency='AUD' rate='1.2879'/>
        <Cube currency='BRL' rate='2.6220'/>
        <Cube currency='CAD' rate='1.3343'/>
        <Cube currency='CNY' rate='8.3062'/>
        <Cube currency='HKD' rate='10.3352'/>
        <Cube currency='IDR' rate='12873.40'/>
        <Cube currency='ILS' rate='4.9036'/>
        <Cube currency='INR' rate='71.8730'/>
        <Cube currency='KRW' rate='1445.93'/>
        <Cube currency='MXN' rate='16.9523'/>
        <Cube currency='MYR' rate='4.1170'/>
        <Cube currency='NZD' rate='1.5715'/>
        <Cube currency='PHP' rate='54.251'/>
        <Cube currency='SGD' rate='1.6491'/>
        <Cube currency='THB' rate='39.728'/>
        <Cube currency='ZAR' rate='11.8588'/>
    </Cube>
</Cube>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-15 04:10:53

您总是可以使用XPath进行XML读取,但我强烈建议您尽可能使用LINQ to XML (.NET 3.5):

代码语言:javascript
复制
XDocument doc = XDocument.Load(url);
XNamespace gesmes = "http://www.gesmes.org/xml/2002-08-01";
XNamespace ns = "http://www.ecb.int/vocabulary/2002-08-01/eurofxref";
var cubes = doc.Descendants(ns + "Cube")
               .Where(x => x.Attribute("currency") != null)
               .Select(x => new { Currency = (string) x.Attribute("currency"),
                                  Rate = (decimal) x.Attribute("rate") });
foreach (var result in cubes)
{
    Console.WriteLine("{0}: {1}", result.Currency, result.Rate);
}

cubes存储您需要的值,即。CurrencyRate

票数 3
EN

Stack Overflow用户

发布于 2013-02-15 08:49:18

为了获得一个节点的值或属性,您需要首先找到这个节点。

一种传统方法:

代码语言:javascript
复制
string query = "//Cube[@currency and @rate]";//select the cube node that has "currency" and "rate" attributes.
XmlNodeList nodes = doc.SelectNodes(query);
foreach (XmlNode node in nodes)
{
    string currency = node.Attributes["currency"].Value;
    string rate = node.Attributes["rate"].Value;
    Console.WriteLine("currency: {0}, rate: {1}", currency, rate);
}  

希望能对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14883107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档