0

http://www.floatrates.com/daily/USD.xmlをc#のリストに変換するにはどうすればよいですか?

これまでのところ:

protected void btnUpdate_Click ( object sender, EventArgs e ) {

    XmlDocument xmlDoc = new XmlDocument ( );
    xmlDoc.Load ( "http://www.floatrates.com/daily/USD.xml" );
    XmlNodeList itemNodes = xmlDoc.SelectNodes ( "//channel/title/link/description/language/pubDate/lastBuildDate/item" );
    foreach ( XmlNode itemNode in itemNodes ) {

        XmlNode currencyNode = itemNode.SelectSingleNode ( "targetCurrency" );
        XmlNode rateNode = itemNode.SelectSingleNode ( "exchangeRate" );




        GridView2.DataSource = lstdata;
        GridView2.DataBind ( );
    }
4

2 に答える 2

1

これはあなたが望むことをします。行を変更してds.Tables[0].Rows、XMLから必要なデータを取得します。

 public static List<string> ProcessXMLDoc()
 {
      XmlDocument xDoc = new XmlDocument();
      xDoc.Load("http://www.floatrates.com/daily/USD.xml");
      List<string> xmlList = new List<string>();
      StringReader sr = new StringReader(xDoc.OuterXml);

      DataSet ds = new DataSet();
      ds.ReadXml(sr);

      foreach (DataRow row in ds.Tables[0].Rows)
      {
           if (!string.IsNullOrWhiteSpace(row[0].ToString()))
           {
                xmlList.Add(row[0].ToString());
           }
      }

      return xmlList;
  }
于 2013-02-14T08:50:12.947 に答える
1

値を保持するオブジェクトを作成し、Linq2XMLを使用してxmlドキュメントをクエリします。

    protected void btnUpdate_Click ( object sender, EventArgs e ) 
    {
        GridView2.DataSource = GetFloatRates();
        GridView2.DataBind ( );
    }

    private List<FloatRateItem> GetFloatRates()
    {
        XDocument xmlDoc = XDocument.Load("http://www.floatrates.com/daily/USD.xml");
        var floatRates = xmlDoc.Descendants("channel");

        var items = from i in floatRates.Elements("item")
                    select new FloatRateItem
                    {
                        Title = i.Element("title").Value,
                        Link = i.Element("link").Value,
                        Description = i.Element("description").Value,
                        PubDate = i.Element("pubDate").Value,
                        BaseCurrency = i.Element("baseCurrency").Value,
                        TargetCurrency = i.Element("targetCurrency").Value,
                        ExchangeRate = i.Element("exchangeRate").Value
                    };

        return items.ToList();
    }

    class FloatRateItem
    {
        public string Title { get; set; }
        public string Link { get; set; }
        public string Description { get; set; }
        public string PubDate { get; set; }
        public string BaseCurrency { get; set; }
        public string TargetCurrency { get; set; }
        public string ExchangeRate { get; set; }

        public override string ToString()
        {
            return string.Format(@"<item>
<title>{0}</title>
<link>{1}</link>
<description>{2}</description>
<pubDate>{3}</pubDate>
<baseCurrency>{4}</baseCurrency>
<targetCurrency>{5}</targetCurrency>
<exchangeRate>{6}</exchangeRate>
</item>", Title, Link, Description, PubDate, BaseCurrency, TargetCurrency, ExchangeRate);
        }
    }
于 2013-02-14T08:59:47.200 に答える